如何检查ArrayList是否包含另一个ArrayList的任何元素?

时间:2013-09-22 12:33:54

标签: java arraylist

有没有办法确定ArrayList是否包含不同ArrayList的任何元素?

像这样:

list1.contains(any element of list2)

循环遍历list2的所有元素并以唯一的方式逐个检查元素?

6 个答案:

答案 0 :(得分:45)

请考虑以下事项: Java SE 7 documentation: java.util.Collections.disjoint

“disjoint”方法将两个集合(例如listA和listB)作为参数,如果它们没有共同的元素,则返回“true”;因此,如果它们有任何共同的元素,它将返回错误。

这样的简单检查就是所需要的:

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

答案 1 :(得分:8)

虽然效率不高,但这很简洁并采用了API:

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

答案 2 :(得分: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);

答案 3 :(得分:2)

如果您有权访问Apache Commons,请参阅CollectionUtils.intersection(a,b)

像这样使用:

! CollectionUtils.intersection(list1, list2).isEmpty()

希望这有帮助。

答案 4 :(得分:2)

if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){
      // has common
}
else{
   //no common
}

使用 org.apache.commons.collections

答案 5 :(得分:1)

如果您不使用第三方库,Apache commons ListUtils适用于常见列表操作。

在这种情况下,您可以使用intersection方法

if(!ListUtils.intersection(list1,list2).isEmpty()) {
    // list1 & list2 have at least one element in common
}