如何从java arraylist中删除重复对象
我需要从对象的arraylist中删除重复的对象。我通过制作对象的数组列表来尝试它。第一个包含所有对象,包括重复对象,另一个仅包含唯一对象
ArrayList<ListTableClass> ltc = new ArrayList<ListTableClass>();//has duplicate
ArrayList<ListTableClass> ltc2 = new ArrayList<ListTableClass>();//unique
我使用contains方法来检查是否存在类似这样的副本:
for (ListTableClass element : ltc) {
if (!ltc2.contains(element)) {
ltc2.add(element);
}
}
但这不会删除重复项。它将ltc的所有元素添加到ltc2中。不知道为什么?ltc确实包含重复的对象
# 1 楼答案
因为ArrayList的函数“contains”在其函数hashcode&;等于,因此必须重写函数“hashCode”&;类ListTableClass的“等于”
例如:
覆盖哈希代码之前的输出:
添加覆盖函数哈希代码:
那么输出是:
由于obj3的hashcode&;其性质与obj0相同