Например у меня есть:
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']
Но при этом желательно не использовать цикл. Это возможно сделать или я слишком много прошу?
Пройтись в цикле и удалить встреченные элементы:
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']
)
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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В адаптере в методе bind устанавливаю данные из List (во фрагменте загружаю их туда из Firestore)Но еще нужны данные, которые находятся в другой коллекции
Сначала я ввожу словами числаЗатем на вход программе подаётся значение N — количество записей, которые необходимо обработать Следующие...