2013-09-22 67 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

相关问题