Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从对象列表中删除重复项,而不依赖于集合_Java_List_Set - Fatal编程技术网

Java 从对象列表中删除重复项,而不依赖于集合

Java 从对象列表中删除重复项,而不依赖于集合,java,list,set,Java,List,Set,在java中,这里有一个陷阱。对象已经编译,因此不能重写hash()和equals()方法。将其放入一个集合,然后再返回列表将不起作用,因为唯一性标准当前未在equals()中定义,并且这不能被覆盖。您应该仍然能够创建子类并创建有效的equals和hashcode方法,除非类/方法是final 如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的等于和hashcode为被包装的东西正确地实现契约 您的处境很艰难,因为我看到的是原始类没有遵循eq

在java中,这里有一个陷阱。对象已经编译,因此不能重写hash()和equals()方法。将其放入一个集合,然后再返回列表将不起作用,因为唯一性标准当前未在equals()中定义,并且这不能被覆盖。

您应该仍然能够创建子类并创建有效的
equals
hashcode
方法,除非类/方法是
final

如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的
等于
hashcode
为被包装的东西正确地实现契约


您的处境很艰难,因为我看到的是原始类没有遵循
equals
hashcode
的约定,这在Java中是一个真正的问题。这是一个相当严重的错误。

您应该仍然能够创建子类并创建可用的
equals
hashcode
方法,除非类/方法是
final

如果是这样的话,您可以使用composition,基本上为要放入集合中的东西创建一个包装器,并让包装器的
等于
hashcode
为被包装的东西正确地实现契约


您的处境很艰难,因为我看到的是原始类没有遵循
equals
hashcode
的约定,这在Java中是一个真正的问题。这是一个相当严重的错误。

为对象编写自定义,并用于对列表进行排序。然后通过循环中的列表删除重复项。

为对象编写自定义项并用于对列表排序。然后通过遍历循环中的列表来删除重复项。

a
compareTo
方法将返回
-1
0
1
;如果
0
,则从列表中删除。

a
compareTo
方法将返回
-1
0
1
;如果
0
,则从列表中删除。

。。。或者将
比较器
树集一起使用
。。。或者将
比较器
树集
一起使用,因为如果比较更便宜,那么树集方法可能更好。最初的问题并没有说要有一个好的hashcode,如果你有一个好的hashcode,你也可以使用containment;i、 使用包装器而不是子类。要点是,如果比较更便宜,树集方法可能更好。最初的问题并没有说要有一个好的hashcode,如果你有一个好的hashcode,你也可以使用containment;i、 e.使用包装而不是子类。equals()方法中未定义的“唯一性”标准是什么?equals()方法中未定义的“唯一性”标准是什么?