Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Collection.removeIf()

Удаляет из коллекции все элементы, подходящие под условие.

Доступно с: Java 8

Синтаксис

default boolean removeIf(Predicate<? super E> filter)

Параметры

ПараметрТипОписание
filterPredicate<? super E>Условие: элементы, для которых оно истинно, удаляются.

Возвращаемое значение

boolean`true`, если что-то было удалено.

Примеры

Удаление пустых строк:

void main() {
    List<String> lines = new ArrayList<>(List.of("one", "", "two", " ", "three"));
    lines.removeIf(String::isBlank);
    IO.println(lines);
}

Результат:

[one, two, three]

Работает и для множеств, и для значений словаря:

void main() {
    Set<Integer> nums = new TreeSet<>(List.of(1, 2, 3, 4, 5));
    nums.removeIf(n -> n > 3);
    IO.println(nums);
    Map<String, Integer> stock = new TreeMap<>(Map.of("pen", 0, "cup", 4));
    stock.values().removeIf(q -> q == 0);
    IO.println(stock);
}

Результат:

[1, 2, 3]
{cup=4}

Примечания

Меняет саму коллекцию, в отличие от stream().filter(), который создаёт новую. Условие задаёт, что удалить, а у filter() — что оставить; не перепутайте знак.

См. также

  • Iterator — Объект, который по одному выдаёт элементы коллекции.
  • List.remove() — Удаляет элемент списка по индексу или по значению.
  • Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.
  • Predicate — Условие: функция, которая принимает значение и возвращает `boolean`.

Вопросы и ответы по теме

В учебнике

  • Обход коллекций — Как перебрать коллекцию в Java: цикл for-each, индексы, forEach с лямбдой, обход словаря, Iterator и removeIf.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.