有沒有什麼辦法來確定一個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