从ArrayList过滤重复项的推荐算法是什么?构成重复项的条件是对SomeClass属性的子集进行条件运算?此外,过滤后的集合必须保留原始列表中剩余元素的顺序。
e.g。
public class SomeClass {
private String a;
private String b;
private String c;
private String d;
}
和duplicates是列表中的两个实例: 拥有object1.getA()。equals(object2.getb())。成员c和d没有兴趣。
SomeClass是第三方库的一部分,不可修改。
不幸的是,将使用jdk1.6,因此没有可用的流,但番石榴是。
该类有十几个String成员,该列表包含数千万个对象。
我研究提供了一个Wrapper类来提供自定义的equals()和hashCode(),并在LinkedHashSet<>中使用它,但是,在提供额外对象的垃圾收集中,操作非常昂贵。
将TreeSet与Comparator一起使用稍微好一些,但需要额外的迭代才能使新的Collection恢复正常。
我对任何其他选择感兴趣。