有没有什么办法来确定一个ArrayList是否包含不同ArrayList的任何元素?如何检查ArrayList是否包含另一个ArrayList的元素?
像这样:
list1.contains(any element of list2)
是通过list2
所有元素循环和检查通过一个唯一的办法的要素呢?
有没有什么办法来确定一个ArrayList是否包含不同ArrayList的任何元素?如何检查ArrayList是否包含另一个ArrayList的元素?
像这样:
list1.contains(any element of list2)
是通过list2
所有元素循环和检查通过一个唯一的办法的要素呢?
虽然效率不高,这是简洁,采用了API:
if (!new HashSet<T>(list1).retainAll(list2).isEmpty())
// at least one element is shared
如何尝试这样的: -
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,请参阅CollectionUtils.intersection(a,b)
使用这样的:
! CollectionUtils.intersection(list1, list2).isEmpty()
希望这有助于。
如果您在使用第三方库时不受限制,Apache commons ListUtils适用于常用列表操作。
在这种情况下,你可以使用intersection
方法
if(!ListUtils.intersection(list1,list2).isEmpty()) {
// list1 & list2 have at least one element in common
}
if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){
// has common
}
else{
//no common
}
使用org.apache.commons.collections
考虑以下几点: Java SE 7 documentation: java.util.Collections.disjoint
的 “脱节” 的方法有两个集合(例如listA和listB)作为参数并返回“tr如果他们没有共同的元素,因此,如果他们有任何共同的元素,它将返回错误。
一个简单的检查一样,这是所有的需要:
if (!Collections.disjoint(listA, listB))
{
//List "listA" contains elements included in list "listB"
}
非常有用的方法1.7以上...:D – ArifMustafa
如果“X以Y的元素”是您的收藏主要用例,你可能要考虑使用设置来代替。 – maasg