有没有办法确定ArrayList是否包含不同ArrayList的任何元素?
像这样:
list1.contains(any element of list2)
循环遍历list2
的所有元素并以唯一的方式逐个检查元素?
答案 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
}