10 java collections equality duplicates
是否有工具或库可根据可实施的特定标准在集合中查找重复条目?
为了使自己清楚:我想根据具体标准相互比较条目.所以我觉得Predicate回归只是true还是false不够.
我不能用equals.
这取决于标准的语义:
如果你的标准始终是相同的给定类,并且是固有的基本概念,你应该实施equals和hashCode并使用一组.
如果您的标准取决于上下文, org.apache.commons.collections.CollectionUtils.select(java.util.Collection,org.apache.commons.collections.Predicate)可能是适合您的解决方案.
小智 2
我创建了一个类似于.NETIEqualityComparer<T>中的界面的新界面。
然后我将这样的EqualityComparator<T>方法传递给以下检测重复项的方法。
public static <T> boolean hasDuplicates(Collection<T> collection,
EqualsComparator<T> equalsComparator) {
List<T> list = new ArrayList<>(collection);
for (int i = 0; i < list.size(); i++) {
T object1 = list.get(i);
for (int j = (i + 1); j < list.size(); j++) {
T object2 = list.get(j);
if (object1 == object2
|| equalsComparator.equals(object1, object2)) {
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以根据我的需要定制比较。
| 归档时间: |
|
| 查看次数: |
13855 次 |
| 最近记录: |