Автор оригинала: François Dupire.
1. Обзор
В этом кратком руководстве мы узнаем о двух методах Collection , которые могут показаться одинаковыми, но не являются: clear() и removeAll() .
Сначала мы рассмотрим определения методов, а затем используем их в коротких примерах.
2. Сбор.очистить()
Сначала мы погрузимся в метод Collection.clear () . Давайте проверим Javadoc метода . Согласно ему, цель clear() состоит в том, чтобы удалить каждый отдельный элемент из списка.
Таким образом, в принципе, вызов clear() в любом списке приведет к тому, что список станет пустым.
3. Коллекция.Удалить все()
Теперь мы рассмотрим Javadoc коллекции|/. remove All() . Мы видим, что метод принимает в качестве аргумента Collection . И его цель состоит в том, чтобы удалить все общие элементы между списком и коллекцией.
Таким образом, при вызове его в коллекции он удалит все элементы из переданного аргумента, которые также находятся в коллекции, для которой мы вызываем removeAll() .
4. Примеры
Давайте теперь рассмотрим некоторый код, чтобы увидеть эти методы в действии. Сначала мы создадим тестовый класс с именем Очистить Vs Удалить Все Модульные Тесты .
После этого мы создадим первый тест для Collection.clear() .
Мы инициализируем коллекцию Целых чисел с несколькими числами и вызовем clear() на ней, чтобы в списке не осталось ни одного элемента:
@Test void whenClear_thenListBecomesEmpty() { Collectioncollection = 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() { CollectionfirstCollection = new ArrayList<>( Arrays.asList(1, 2, 3, 4, 5)); Collection 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 .