Подтвердить что ты не робот

Как я могу проверить, содержит ли ArrayList какой-либо элемент другого ArrayList?

Есть ли способ определить, содержит ли ArrayList какой-либо элемент другого ArrayList?

Вот так:

list1.contains(any element of list2)

Перебирает все элементы list2 и проверяет элементы один за другим единственным способом?

4b9b3361

Ответ 1

Хотя он не очень эффективен, он является кратким и использует API:

if (!new HashSet<T>(list1).retainAll(list2).isEmpty())
    // at least one element is shared 

Ответ 2

Рассмотрим следующее: Документация по Java SE 7: java.util.Collections.disjoint

Метод "непересекающийся" принимает в качестве параметров два набора (listA и listB) в качестве параметров и возвращает "true", если они не имеют общих элементов; таким образом, если они имеют какие-либо общие элементы, они вернут false.

Простая проверка, как это, требуется:

if (!Collections.disjoint(listA, listB))
{
  //List "listA" contains elements included in list "listB"
}

Ответ 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);

Ответ 4

Если у вас есть доступ к Apache Commons, см. CollectionUtils.intersection(a, b)

Используйте это:

! CollectionUtils.intersection(list1, list2).isEmpty()

Надеюсь, что это поможет.

Ответ 5

if(!CollectionUtils.intersection(arrayList1, arrayList2).isEmpty()){
      // has common
}
else{
   //no common
}

используйте org.apache.commons.collections

Ответ 6

Если вы не ограничены в использовании сторонних библиотек, Apache commons ListUtils хорош для обычных операций списка.

В этом случае вы можете использовать метод intersection

if(!ListUtils.intersection(list1,list2).isEmpty()) {
    // list1 & list2 have at least one element in common
}