1. Общ преглед
В този бърз урок ще научим за два метода за събиране , които може да изглеждат едно и също, но не са: clear () и removeAll () .
Първо ще видим дефинициите на метода и след това ще ги използваме в кратки примери.
2. Collection.clear ()
Първо ще се потопим в метода Collection.clear () . Нека проверим Javadoc на метода. Според него целта на clear () е да премахне всеки отделен елемент от списъка.
Така че, основно, извикването на clear () във всеки списък ще доведе до това, че списъкът ще стане празен.
3. Collection.removeAll ()
Сега ще разгледаме Javadoc на Collection.removeAll () . Можем да видим, че методът приема Collection като аргумент. И целта му е да премахне всички общи елементи между списъка и колекцията.
Така че, когато го извиква в колекция, той ще премахне всички елементи от предадения аргумент, които също са в колекцията, на която наричаме removeAll () .
4. Примери
Нека сега разгледаме някакъв код, за да видим тези методи в действие. Първо ще създадем тестов клас с името ClearVsRemoveAllUnitTest .
След това ще създадем първи тест за Collection.clear () .
Ще инициализираме колекция от цели числа с няколко номера и ще извикаме clear () върху нея, така че да няма елемент в списъка:
@Test void whenClear_thenListBecomesEmpty() { Collection 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 firstCollection = 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.