Преимущества удаления элемента из коллекции, заданного одним объектом

Я нашел следующий код в официальных java-документах :

collection.removeAll(Collections.singleton(element));

Я не мог понять преимущества этого подхода. Почему бы не удалить обычный элемент?

collection.remove(element);

Благодаря!

4
nl ja de

4 ответы

Первый удаляет все вхождения элемента в коллекции, последний удаляет только первое вхождение.

8
добавлено
О, это довольно просто! Спасибо!
добавлено автор bsiamionau, источник

Точность. к документам:

рассмотрим следующую идиому, чтобы удалить все экземпляры указанного элемента, e, из коллекции, c

collection.removeAll(Collections.singleton(element));

while collection.remove (element); удаляет один экземпляр указанного элемента из этой коллекции

Таким образом, чтобы удалить все экземпляры, вы должны использовать конструкцию цикла с последним подходом. в то время как первый - это всего лишь одно задание на линию.

5
добавлено

From the API

удалить (объект o)
  Удаляет один экземпляр указанного элемента из этой коллекции, если он присутствует

а также:

removeAll (Коллекция c)
  Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции

Таким образом, если ваша коллекция имеет более одного случая элемента, который вы хотите удалить, вам придется выполнять collection.remove (element) несколько раз, но removeAll только один раз. Поскольку removeAll принимает коллекцию в качестве аргумента, Collection.singleton может предложить вам удобный способ создания коллекции только с одним аргументом.

3
добавлено

При тестировании (модульное тестирование). Collections.singleton - это однострочный способ превратить ваш объект в коллекцию. Альтернатива - две строки, а не обременительные.

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async