![](/img/trans.png)
[英]Way to check if two Collections contain the same elements, independent of order?
[英]Is there a way to check if two Collections contain the same elements, independent of order?
我一直在尋找一個像Arrays.equals(a1, a2)
一樣操作的方法,但忽略了元素順序。 我無法在任何Google Collections中找到它(類似於Iterables.elementsEqual()
,但確實考慮了排序)和JUnit( assertEquals()
顯然只是在Collection上調用equals()
,這取決於Collection實現,這不是我想要的)最好是這樣的方法會采用Iterable
,但我也可以簡單地使用Collection
s這樣的方法當然會考慮Collection
的任何重復元素(所以它不能簡單地測試containsAll()
)。
請注意,我不是在問如何實現這樣的事情,我只是想知道是否有任何標准的Collections庫都有它。
Apache commons-collections有CollectionUtils#isEqualCollection :
如果給定的集合包含具有完全相同基數的完全相同的元素,則返回true。
也就是說,如果a中的e的基數等於b中的e的基數,則對於a或b中的每個元素e。
我認為,這正是你所追求的。
這是三個方法調用並使用Google Collections Guava ,但可能很簡單:
HashMultiset.create(c1).equals(HashMultiset.create(c2));
創建臨時Multiset
可能看起來很浪費,但要有效地比較集合,您需要以某種方式索引它們。
如果你想忽略秩序,那么如何測試集合是否相等?
new HashSet(c1).equals(new HashSet(c2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.