我想在一个类上实现一个 equals 方法,其中实例的相等性源自包含列表的“弱”相等性,即列表元素的相同顺序不是必需的,而java.util.List.equals(Object)
(您可以在下面查看它的 javadoc)要求相同的顺序。
那么,对列表执行与顺序无关的相等检查的最佳方法是什么?
我想将列表包装成新列表,对它们进行排序,然后在那里执行等于。
或另一种方法(这会使这个问题过时):改用 TreeSet,这样元素的顺序在具有相同元素的集合中总是相同的。
/**
* Compares the specified object with this list for equality. Returns
* <tt>true</tt> if and only if the specified object is also a list, both
* lists have the same size, and all corresponding pairs of elements in
* the two lists are <i>equal</i>. (Two elements <tt>e1</tt> and
* <tt>e2</tt> are <i>equal</i> if <tt>(e1==null ? e2==null :
* e1.equals(e2))</tt>.) In other words, two lists are defined to be
* equal if they contain the same elements in the same order. This
* definition ensures that the equals method works properly across
* different implementations of the <tt>List</tt> interface.
*
* @param o the object to be compared for equality with this list
* @return <tt>true</tt> if the specified object is equal to this list
*/
boolean equals(Object o);
我知道答案并关闭了标签。之后,我阅读了一篇关于 meta 的帖子,介绍了在这种情况下该怎么做。但由于我的问题被 SO 缓存了,我还是要发布它。也许将来有人会遇到同样的“问题”。如果没有人这样做,我将发布答案。