Typowana konwersja strumienia do tablicy
Konwertuj strumienie do typowanych tablic za pomocą referencji do metody.
Porównanie kodu
✕ Pre-Streams
List<String> list = getNames();
List<String> filtered = new ArrayList<>();
for (String n : list) {
if (n.length() > 3) {
filtered.add(n);
}
}
String[] arr = filtered.toArray(new String[0]);
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Bezpieczny typ
Bez rzutowania na Object[] — typ tablicy jest poprawny.
Łańcuchowalność
Działa na końcu dowolnego potoku strumieniowego.
Zwięzłość
Jedno wyrażenie zastępuje ręczną pętlę.
Stare podejście
Ręczne filtrowanie + kopiowanie
Nowoczesne podejście
toArray(generator)
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Typowana konwersja strumienia do tablicy
Dostępne
Szeroko dostępne od JDK 8 (marzec 2014)
Jak to działa
Metoda toArray(IntFunction) tworzy poprawnie typowaną tablicę ze strumienia. Generator (String[]::new) mówi strumieniowi, jakiego typu tablicę utworzyć.
Powiązana dokumentacja
Dowód