回答
你可以使用isEqualList
從Apache的ListUtils
:
isEqualList
public static boolean isEqualList(java.util.Collection list1,
java.util.Collection list2)
測試的價值平等的兩個列表按在 List.equals(Java中的平等契約。 lang.Object)。
此方法對於在不能擴展 AbstractList時執行列表很有用。該方法使用Collection實例來啓用其他 集合類型以使用List實現算法。
相關文本(略意譯,因爲這是一個靜態方法) 是:
比較兩個列表對象是否相等。如果且僅當兩個列表具有相同的大小並且兩個列表中的所有對應的 元素相等,則返回true。 (兩個元素e1和e2等於 if(e1 == null?e2 == null:e1.equals(e2))。)換句話說,兩個列表 被定義爲相等,如果它們包含相同的元素相同 的順序。此定義確保equals方法在List接口的不同實現之間正常工作 。注意:如果在 等於比較期間修改列表,則此方法的 行爲未定義。
這是正確的方法。你的名單與你所說的不一樣。嘗試打印它們以進行視覺檢查。
所以基本上你是說這應該工作,如果不是這意味着列表有問題,OP應該打印它們以查看問題?看起來[更像是對我的評論,而不是回答](http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid)。 – Pshemo
對於兩個列表相同,它們需要具有相同的順序。我只能假設你想在考慮平等時忽略兩個列表的排序。
對於忽略順序的比較,可以比較兩個Map<String, Integer>
實例(其中Integer
是每個字符串的計數)。
如:
public <T> boolean isEqualIgnoreOrder(List<T> l1, List<T> l2) {
if (l1.size() != l2.size()) {
return false;
}
Map<T, Integer> m1 = createMap(l1);
Map<T, Integer> m2 = createMap(l2);
return m1.equals(m2);
}
protected <T> Map<T, Integer> createMap(List<T> list) {
Map<T, Integer> map = new HashMap<T, Integer>();
for (T item : list) {
Integer prevCount = map.get(item);
map.put(prevCount == null ? 1 : prevCount + 1);
}
return map;
}
這種類型的集合稱爲一個袋子。更多討論here
- 1. 比較兩個字符串列表.CSV
- 2. 如何比較兩個w_char []字符串
- 3. 如何比較兩個字符串
- 4. 如何比較兩個Q字符串?
- 5. Javascript如何比較兩個字符串
- 6. 如何比較兩個字符串?
- 7. 如何比較兩個base64字符串?
- 8. 比較兩個字符串[]
- 9. 比較兩個字符串?
- 10. 比較兩個字符串
- 11. 如何列表與字符串比較
- 12. 列表字符串比較
- 13. 比較兩個字符串,如日期
- 14. C++比較2個字符串列表
- 15. C++比較兩個字符串文字
- 16. 比較兩個數字字符串值
- 17. 比較兩個字符串由字母
- 18. 比較兩組字符串
- 19. 比較字符串兩場
- 20. 如何比較兩個鏈表的字符串?
- 21. 如何比較字符串中的兩個字符?
- 22. Python字符串列表:如何從兩個字符串列表的比較中檢索唯一值?
- 23. 比較不同字符串的兩個列表
- 24. 比較兩個字符串arraylists或列表
- 25. 比較兩個字符串列表元素順序
- 26. 比較兩個字符串列表元素
- 27. Python比較兩個字符串的相似性列表
- 28. 比較兩個列表時發現匹配的字符串
- 29. 比較字符串數組的兩個列表
- 30. 將兩個字符串列表相互比較Python
我們必須知道您的'equals'的定義 – Kent
包含代碼可以讓我們重現您的問題。否則,我們只能猜測什麼是錯的,這意味着很多猜測。 – Pshemo
請發佈示例輸入和輸出。 – skiwi