Jor*_*orn 36 java collections equals
我一直在寻找一种操作类似Arrays.equals(a1, a2)但忽略元素顺序的方法.我无法在Google Collections中找到它(类似的东西Iterables.elementsEqual(),但确实考虑到了排序)和JUnit(assertEquals()显然只是调用equals()Collection,这取决于Collection实现,而这不是我想要的)它会如果这样的方法会采用Iterables,那就最好了,但是我也可以简单地使用Collections这样的方法当然会考虑集合中的任何重复元素(所以它不能简单地测试containsAll()).
请注意,我不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它.
Cow*_*wan 44
Apache commons-collections有CollectionUtils#isEqualCollection:
如果给定的集合包含具有完全相同基数的完全相同的元素,则返回true.
也就是说,如果a中的e的基数等于b中的e的基数,则对于a或b中的每个元素e.
我认为,这正是你所追求的.
fin*_*nnw 29
这是三个方法调用并使用Google Collections Guava,但可能很简单:
HashMultiset.create(c1).equals(HashMultiset.create(c2));
Run Code Online (Sandbox Code Playgroud)
创建临时文件Multiset可能看起来很浪费,但为了有效地比较集合,您需要以某种方式对它们进行索引.