Конечно - сначала создайте HashSet<Integer>
из одного из списков.
Set<Integer> set = new HashSet<Integer>(l2);
for (Integer i : l1) {
if (set.contains(i)) {
System.out.println("Found!");
}
}
Если вы хотите найти все повторяющиеся записи, вам даже не нужно писать свой собственный цикл, например Set<E>
обеспечивает все, что вам нужно ...
Set<Integer> set = new HashSet<Integer>(l2);
set.retainAll(new HashSet<Integer>(l1));
Впоследствии set
будет пересечением двух списков.
Обратите внимание, что вы можете быть еще более эффективными, если оба вашихсписки уже отсортированы для начала.Вы просто выполняете итерацию по обоим одновременно, перемещая «курсор» вперед для любого итератора, имеющего в настоящее время меньшее значение.