Ответ 1
Хотя он не очень эффективен, он является кратким и использует API:
if (!new HashSet<T>(list1).retainAll(list2).isEmpty())
// at least one element is shared
Есть ли способ определить, содержит ли ArrayList какой-либо элемент другого ArrayList?
Вот так:
list1.contains(any element of list2)
Перебирает все элементы list2
и проверяет элементы один за другим единственным способом?
Хотя он не очень эффективен, он является кратким и использует API:
if (!new HashSet<T>(list1).retainAll(list2).isEmpty())
// at least one element is shared
Рассмотрим следующее: Документация по Java SE 7: java.util.Collections.disjoint
Метод "непересекающийся" принимает в качестве параметров два набора (listA и listB) в качестве параметров и возвращает "true", если они не имеют общих элементов; таким образом, если они имеют какие-либо общие элементы, они вернут false.
Простая проверка, как это, требуется:
if (!Collections.disjoint(listA, listB))
{
//List "listA" contains elements included in list "listB"
}
Как пробовать вот так: -
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()
Надеюсь, что это поможет.
if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){
// has common
}
else{
//no common
}
используйте org.apache.commons.collections
Если вы не ограничены в использовании сторонних библиотек, Apache commons ListUtils хорош для обычных операций списка.
В этом случае вы можете использовать метод intersection
if(!ListUtils.intersection(list1,list2).isEmpty()) {
// list1 & list2 have at least one element in common
}