gpt4 book ai didi

java - 基于 equals 方法的不同实现来计算列表中项目的频率

转载 作者:行者123 更新时间:2023-12-02 12:01:28 24 4
gpt4 key购买 nike

我正在使用Collections.Frequency()来计算列表中对象的频率。我重写了 equals 方法。我的用例对象是一个MenuItem

equals 方法在返回 true 之前检查名称和其他属性是否都相等。

如果这是我想要的 equals 类型,则此方法有效。

有时我想根据 MenuItem id 检查它们是否相等。

我的问题是,已经实现了 equals 方法,我不能将其与 Collection.Frequency() 一起使用。

如何根据 equals 方法的不同实现来计算列表中项目的频率?

谢谢

斯特凡诺

最佳答案

这里是java.util.Collections#Frequency的实现

public static int frequency(Collection<?> c, Object o) {
int result = 0;
if (o == null) {
for (Object e : c)
if (e == null)
result++;
} else {
for (Object e : c)
if (o.equals(e))
result++;
}
return result;
}

其实没那么复杂。您可以创建自己的 CollectionUtils 类并定义一个方法来获取接受 Comparator 作为参数的集合的频率

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;
}

关于java - 基于 equals 方法的不同实现来计算列表中项目的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com