2013-09-22 229 views
14

有沒有什麼辦法來確定一個ArrayList是否包含不同ArrayList的任何元素?如何檢查ArrayList是否包含另一個ArrayList的元素?

像這樣:

list1.contains(any element of list2) 

是通過list2所有元素循環和檢查通過一個唯一的辦法的要素呢?

+0

如果「X以Y的元素」是您的收藏主要用例,你可能要考慮使用設置來代替。 – maasg

回答

7

雖然效率不高,這是簡潔,採用了API:

if (!new HashSet<T>(list1).retainAll(list2).isEmpty()) 
    // at least one element is shared 
3

如何嘗試這樣的: -

List1.retainAll(List2) 

這樣的: -

int a[] = {30, 100, 40, 20, 80}; 
int b[] = {100, 40, 120, 30, 230, 10, 80}; 
List<Integer> 1ist1= Arrays.asList(a); 
List<Integer> 1ist2= Arrays.asList(b); 
1ist1.retainsAll(1ist2); 
1

如果您在使用第三方庫時不受限制,Apache commons ListUtils適用於常用列表操作。

在這種情況下,你可以使用intersection方法

if(!ListUtils.intersection(list1,list2).isEmpty()) { 
    // list1 & list2 have at least one element in common 
} 
2
if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){ 
     // has common 
} 
else{ 
    //no common 
} 

使用org.apache.commons.collections

41

考慮以下幾點: Java SE 7 documentation: java.util.Collections.disjoint

的 「脫節」 的方法有兩個集合(例如listA和listB)作爲參數並返回「tr如果他們沒有共同的元素,因此,如果他們有任何共同的元素,它將返回錯誤。

一個簡單的檢查一樣,這是所有的需要:

if (!Collections.disjoint(listA, listB)) 
{ 
    //List "listA" contains elements included in list "listB" 
} 
+0

非常有用的方法1.7以上...:D – ArifMustafa

相關問題