我希望用TreeSet
根据其属性(这里是toString()
其返回对象的名称),删除重复的对象,这里是我的代码:的Java TreeSet中删除重复的基于对象的属性
Set<Object> s = new TreeSet<>(new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
if (o1.toString().equals(o2.toString())) {
return 0;
} else {
return 1;
}
}
});
s.addAll(listComCopy);
listComCopy.clear();
listComCopy.addAll(s);
listComCopy
是一个列表对象。
它做的工作,但它只比较列表上的连续对象,所以如果我有list(50).equals(list(150))
它会忽略。
你有什么想法,我该如何重构此代码,以消除所有重复无regardeless他们在列表中的顺序?
在Java 8中,您可以使用'new TreeSet <>(比较器。比较(Object :: toString));' – Holger