2014-03-04 58 views
1

如何檢查ArrayList的對象是否與另一個對象匹配,無論元素的順序及其出現次數如何。讓我們說我有:檢查兩個ArrayList對象是否匹配

obj1 contains "boy", "girl", "kid" 
obj2 contains  "girl", "kid", "boy", "girl" 
obj3 contains  "woman", "boy", "girl", "kid" 

所有的ArrayList的

我想要的程序來實現這一點:

obj1 =  obj2 true 
obj1 =  obj3 false 
obj2 =  obj3 false 
+1

你已經嘗試到現在什麼? – Zeeshan

+3

聽起來更像是一個'Set'而不是'List'。 – FatalError

+0

參考 - http://stackoverflow.com/questions/16386278/how-to-check-if-objects-in-an-array-list-has-the-same-value – Suhas

回答

3

我認爲你的意思是以下幾點。您想檢查列表中包含的唯一元素是否相同。訂單無關緊要。

爲了解決這個問題,你需要一個只包含獨特的元素,不維持秩序組:

List<String> first = .... 
List<String> second = .... 

boolean result = new HashSet<>(first).equals(new HashSet<>(second)); 
0

只是爲了讓你開始閱讀有關名單。載方法。在帶有布爾標誌的嵌套循環中使用它來指示一個列表項是否滿足.equals到其他列表中的任何項目。

您還需要決定比較是否應該是雙向的。您可能有一個場景,其中obj1的所有項目都存在於obj2中,但obj2中的所有項目都不存在於obj1中。換句話說,obj2是obj1的超集。

1

您應該使用containsAll()方法:

List a = Arrays.asList("boy", "girl", "kid"); 
    List b = Arrays.asList("girl", "kid", "boy", "girl"); 
    List c = Arrays.asList("woman", "boy", "girl", "kid"); 

    System.out.println(a.containsAll(b));  // true 
    System.out.println(a.containsAll(c));  // false 
    System.out.println(b.containsAll(c));  // false