как удалить уникальные элементы из arrayList - PullRequest
0 голосов
/ 26 мая 2018

У меня есть два списка, в одном списке значения 1,2,3

другой список 2,3

Я хочу удалить значения, которые не совпадают в обоих списках.

2 и 3 сопоставляются в обоих списках, затем 1 не сопоставляется в обоих списках, поэтому я хочу удалить это значение.

List original = [1,2,3];

List dummy = [2,3];

Ответы [ 3 ]

0 голосов
/ 26 мая 2018

Если вы используете Java 8+, вы можете использовать:

original.removeIf(a -> !dummy.contains(a));

Вот пример с Java 10

var original = new ArrayList<>(List.of(1, 2, 3, 4));
var dummy = new ArrayList<>(List.of(2, 4, 3));

original.removeIf(a -> !dummy.contains(a));

System.out.println(original);
->[2, 3, 4]
0 голосов
/ 26 мая 2018

Вам не нужно использовать Set для выполнения вашего требования.
Используйте retainAll(), определенный в Collection, который реализует любая реализация List, такая как:

List<Integer> original = new ArrayList<>(Arrays.asList(1,2,3));
List<Integer> dummy = Arrays.asList(2,3);

original.retainAll(dummy);
System.out.println(original);

Выход:

[2, 3]

0 голосов
/ 26 мая 2018

Если вместо этого можно использовать наборы, то вы можете просто получить пересечение между наборами ( info ):

Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

Конечно, с наборами у вас не может быть дубликатови вы потеряете заказ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...