Operacje zbiorcze kolekcji zamiast pętli modyfikujących
Używaj removeIf(), replaceAll() i List.sort() do bezpośredniego przekształcania kolekcji.
Porównanie kodu
✕ Iterator mutation loop
for (Iterator<Order> it = orders.iterator(); it.hasNext();) {
if (it.next().cancelled()) {
it.remove();
}
}
✓ Java 8+
orders.removeIf(Order::cancelled);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Jasny zamiar
Operacja opisuje, co się zmienia, a nie sposób iteracji.
Bezpieczniejsza modyfikacja
Eliminuje konieczność ręcznego przestrzegania reguł usuwania za pomocą iteratora.
Mniej kodu
Typowe przekształcenia stają się pojedynczym wyrażeniem.
Stare podejście
Ręczne usuwanie za pomocą iteratora
Nowoczesne podejście
Collection.removeIf()
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Operacje zbiorcze kolekcji zamiast pętli modyfikujących
Dostępne
Dostępne od JDK 8 (marzec 2014)
Jak to działa
Nowoczesne interfejsy kolekcji udostępniają typowe modyfikacje bezpośrednio. Metody takie jak removeIf(), replaceAll() i List.sort() zastępują pętle przeładowane logiką sterującą operacjami, które jasno wyrażają zamierzone przekształcenie.
Powiązana dokumentacja
Dowód