Java 从对象列表中删除重复项,而不依赖于集合
在java中,这里有一个陷阱。对象已经编译,因此不能重写hash()和equals()方法。将其放入一个集合,然后再返回列表将不起作用,因为唯一性标准当前未在equals()中定义,并且这不能被覆盖。您应该仍然能够创建子类并创建有效的Java 从对象列表中删除重复项,而不依赖于集合,java,list,set,Java,List,Set,在java中,这里有一个陷阱。对象已经编译,因此不能重写hash()和equals()方法。将其放入一个集合,然后再返回列表将不起作用,因为唯一性标准当前未在equals()中定义,并且这不能被覆盖。您应该仍然能够创建子类并创建有效的equals和hashcode方法,除非类/方法是final 如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的等于和hashcode为被包装的东西正确地实现契约 您的处境很艰难,因为我看到的是原始类没有遵循eq
equals
和hashcode
方法,除非类/方法是final
如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的等于和hashcode
为被包装的东西正确地实现契约
您的处境很艰难,因为我看到的是原始类没有遵循equals
和hashcode
的约定,这在Java中是一个真正的问题。这是一个相当严重的错误。您应该仍然能够创建子类并创建可用的equals
和hashcode
方法,除非类/方法是final
如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的等于和hashcode
为被包装的东西正确地实现契约
您的处境很艰难,因为我看到的是原始类没有遵循equals
和hashcode
的约定,这在Java中是一个真正的问题。这是一个相当严重的错误。为对象编写自定义,并用于对列表进行排序。然后通过循环中的列表删除重复项。为对象编写自定义项并用于对列表排序。然后通过遍历循环中的列表来删除重复项。acompareTo
方法将返回-1
,0
,1
;如果0
,则从列表中删除。acompareTo
方法将返回-1
,0
,1
;如果0
,则从列表中删除。。。。或者将比较器
与树集一起使用
。。。或者将比较器
与树集
一起使用,因为如果比较更便宜,那么树集方法可能更好。最初的问题并没有说要有一个好的hashcode,如果你有一个好的hashcode,你也可以使用containment;i、 使用包装器而不是子类。要点是,如果比较更便宜,树集方法可能更好。最初的问题并没有说要有一个好的hashcode,如果你有一个好的hashcode,你也可以使用containment;i、 e.使用包装而不是子类。equals()方法中未定义的“唯一性”标准是什么?equals()方法中未定义的“唯一性”标准是什么?