有没有办法确定一个 ArrayList 是否包含不同 ArrayList 的任何元素?
像这样:
list1.contains(any element of list2)
循环遍历所有元素list2
并一一检查元素是唯一的方法吗?
考虑以下内容: Java SE 7 文档:java.util.Collections.disjoint
“disjoint”方法将两个集合(例如 listA 和 listB)作为参数,如果它们没有共同的元素,则返回“true”;因此,如果它们有任何共同的元素,它将返回 false。
只需要这样一个简单的检查:
if (!Collections.disjoint(listA, listB))
{
//List "listA" contains elements included in list "listB"
}
虽然效率不高,但它很简洁并且使用了 API:
if (!new HashSet<T>(list1).retainAll(list2).isEmpty())
// at least one element is shared
if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){
// has common
}
else{
//no common
}
采用org.apache.commons.collections
如果您有权访问 Apache Commons,请参阅CollectionUtils.intersection(a,b)
像这样使用:
! CollectionUtils.intersection(list1, list2).isEmpty()
希望这可以帮助。
像这样尝试怎么样: -
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);
如果您不受使用第三方库的限制,Apache commons ListUtils非常适合常见的列表操作。
在这种情况下,您可以使用该intersection
方法
if(!ListUtils.intersection(list1,list2).isEmpty()) {
// list1 & list2 have at least one element in common
}