Java 根据equals方法的不同实现计算列表中项目的频率
我正在使用Collections.frequency计算列表中对象的频率。 我推翻了equals方法。 我的用例对象是一个菜单项 equals方法在返回true之前检查名称和其他属性是否都相等 如果这是我想要的相等类型,那么这就行了 有时我想根据MenuItem id检查它们是否相等 我的问题是,, 已经实现了equals方法, 我无法将此用于Collection.frequency 如何根据equals方法的不同实现计算列表中项目的频率 多谢各位Java 根据equals方法的不同实现计算列表中项目的频率,java,android,collections,Java,Android,Collections,我正在使用Collections.frequency计算列表中对象的频率。 我推翻了equals方法。 我的用例对象是一个菜单项 equals方法在返回true之前检查名称和其他属性是否都相等 如果这是我想要的相等类型,那么这就行了 有时我想根据MenuItem id检查它们是否相等 我的问题是,, 已经实现了equals方法, 我无法将此用于Collection.frequency 如何根据equals方法的不同实现计算列表中项目的频率 多谢各位 Stefano下面是java.util.Col
Stefano下面是java.util.Collectionsfrequency的实现 没那么复杂。您可以创建自己的CollectionUtils类,并定义一个方法来获取接受比较器作为参数的集合的频率
public static <T> int frequency(Collection<T> c, T o, Comparator<? super T> comp) {
int result = 0;
if (o == null) {
for (Object e : c)
if (e == null)
result++;
} else {
for (T e : c)
if (comp.compare(e,o) == 0)
result++;
}
return result;
}
public static <T> int frequency(Collection<T> c, T o, Comparator<? super T> comp) {
int result = 0;
if (o == null) {
for (Object e : c)
if (e == null)
result++;
} else {
for (T e : c)
if (comp.compare(e,o) == 0)
result++;
}
return result;
}