Как удалить из первого списка все элементы второго списка?

118
21 октября 2019, 19:00

Например у меня есть:

import java.util.LinkedList;
public class Main {
  public static void main(String[] args) {
    LinkedList first = new LinkedList();  // first = ['A', 'B', 'B', 'A']
    LinkedList second = new LinkedList();  // second = ['B', 'A']
  }
}

Мне нужно удалить все элементы из первого списка, которые есть во втором. В конце должно получиться:

first = ['A', 'B'],
second = [] или second = ['B', 'A']

Но при этом желательно не использовать цикл. Это возможно сделать или я слишком много прошу?

Answer 1

Пройтись в цикле и удалить встреченные элементы:

LinkedList first = new LinkedList();  // first = ['A', 'B', 'B', 'A']
first.addAll(Arrays.asList("A", "B", "B", "A"));
LinkedList second = new LinkedList();  // second = ['B', 'A']
second.addAll(Arrays.asList("B", "A"));
for (Object o : second) {
    first.remove(o);
}
System.out.println(first);  // [B, A]

Вместо цикла можно использовать конструкцию из streams-api (@Russtam, спс за подсказку):

second.forEach(first::removeFirstOccurrence);
System.out.println(first);  // [B, A]

Сначала будет удалена первая попавшаяся B (['A', 'B', 'A']), после A (['B', 'A'])

Answer 2
int index = Collections.indexOfSubList(first, second);
    if (index!=-1) {
        List<String> list1 = first.subList(0, index);
        List<String> list2 = first.subList(index + second.size(), first.size());
        list1.addAll(list2);
        first = list1;
    }
READ ALSO
Загрузка в адаптер из другой коллекции Firestore

Загрузка в адаптер из другой коллекции Firestore

В адаптере в методе bind устанавливаю данные из List (во фрагменте загружаю их туда из Firestore)Но еще нужны данные, которые находятся в другой коллекции

152
jQuery load + Spring + Thymeleaf. Подгрузка файлов

jQuery load + Spring + Thymeleaf. Подгрузка файлов

Есть файл, допустим, generalhtml:

161
как найти значение в хеш таблице(словаре)?

как найти значение в хеш таблице(словаре)?

Сначала я ввожу словами числаЗатем на вход программе подаётся значение N — количество записей, которые необходимо обработать Следующие...

120
Изменение имени класса java [закрыт]

Изменение имени класса java [закрыт]

Как можно изменить имя класса из главного метода?

171