Групповые операции с коллекциями вместо циклов с изменением
Используйте removeIf(), replaceAll() и List.sort() для непосредственного преобразования коллекций.
Сравнение кода
✕ Iterator mutation loop
for (Iterator<Order> it = orders.iterator(); it.hasNext();) {
if (it.next().cancelled()) {
it.remove();
}
}
✓ Java 8+
orders.removeIf(Order::cancelled);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Ясное намерение
Операция описывает, что изменяется, а не как выполнять итерацию.
Безопасное изменение
Не нужно вручную соблюдать правила удаления через итератор.
Меньше кода
Распространённые преобразования становятся одним выражением.
Старый подход
Ручное удаление через итератор
Современный подход
Collection.removeIf()
Начиная с JDK
8
Сложность
Начинающий
Поддержка JDK
Групповые операции с коллекциями вместо циклов с изменением
Доступно
Доступно начиная с JDK 8 (март 2014)
Как это работает
Современные интерфейсы коллекций напрямую предоставляют распространённые операции изменения. Такие методы, как removeIf(), replaceAll() и List.sort(), заменяют перегруженные управляющей логикой циклы операциями, которые явно выражают требуемое преобразование.
Связанная документация
Доказательство