在java中,这里有一个问题。对象已经编译,因此无法覆盖hash()和equals()方法。将其放入集合中,然后返回到列表将不起作用,因为唯一性的标准当前未在equals()中定义,并且无法覆盖。
答案 0 :(得分:3)
您应该仍然可以创建子类并创建有效的equals
和hashcode
方法,除非类/方法是final
。
如果是这种情况,你可以使用合成,基本上为你放入集合中的东西创建一个包装器,让包装器的equals
和hashcode
正确地实现合同,被包裹的东西。
你处境艰难,因为我正在阅读的是原始类没有遵循equals
和hashcode
的合同,这是Java中的一个真正问题。这是一个非常严重的错误。
答案 1 :(得分:1)
为您的对象编写自定义Comparator,并使用Collections.sort()对列表进行排序。然后通过遍历循环中的列表来删除重复项。
答案 2 :(得分:1)
compareTo
方法会返回-1
,0
,1
;如果0
,请从列表中删除。