1. Обзор
В этом кратком руководстве мы узнаем о двух методах Collection
, которые, казалось бы, делают одно и то же, но это не так: clear()
и removeAll()
.
Сначала мы рассмотрим определения методов, а затем используем их в коротких примерах.
2. Коллекция.очистить()
Сначала мы погрузимся в метод Collection.clear()
. Давайте проверим Javadoc метода . Согласно ему, цель clear()
— удалить каждый элемент из списка.
Таким образом, вызов clear()
в любом списке приведет к тому, что список станет пустым.
3. Коллекция.удалить все()
Теперь мы рассмотрим Javadoc Collection.removeAll ()
. Мы видим, что метод принимает коллекцию
в качестве аргумента. И его цель — удалить все общие элементы между списком и коллекцией.
Таким образом, при вызове его для коллекции он удалит все элементы из переданного аргумента, которые также находятся в коллекции, для которой мы вызываем removeAll()
.
4. Примеры
Давайте теперь посмотрим на код, чтобы увидеть эти методы в действии. Сначала мы создадим тестовый класс с именем ClearVsRemoveAllUnitTest
.
После этого мы создадим первый тест для Collection.clear()
.
Мы инициализируем набор целых чисел
несколькими числами и вызовем для него функцию clear()
, чтобы в списке не осталось ни одного элемента:
@Test
void whenClear_thenListBecomesEmpty() {
Collection<Integer> collection = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
collection.clear();
assertTrue(collection.isEmpty());
}
Как мы видим, коллекция пуста после вызова clear()
.
Давайте создадим второй тест с двумя коллекциями, одна с номерами от 1 до 5, а другая с номерами от 3 до 7. После этого мы вызовем removeAll()
для первой коллекции со второй в качестве параметра.
Мы ожидаем, что в первом наборе останутся только числа 1 и 2 (а второй не изменится):
@Test
void whenRemoveAll_thenFirstListMissElementsFromSecondList() {
Collection<Integer> firstCollection = new ArrayList<>(
Arrays.asList(1, 2, 3, 4, 5));
Collection<Integer> secondCollection = new ArrayList<>(
Arrays.asList(3, 4, 5, 6, 7));
firstCollection.removeAll(secondCollection);
assertEquals(
Arrays.asList(1, 2),
firstCollection);
assertEquals(
Arrays.asList(3, 4, 5, 6, 7),
secondCollection);
}
И наши ожидания оправдываются. В первой коллекции остались только числа 1 и 2, а вторая не изменилась.
5. Вывод
В этой статье мы рассмотрели назначение функций Collection.clear()
и Collection.removeAll()
.
Несмотря на то, что мы могли бы подумать сначала, они не делают то же самое. clear()
удаляет каждый элемент из коллекции, а removeAll()
удаляет только те элементы, которые соответствуют элементам из другой коллекции
.
И, как всегда, код можно найти на GitHub .