Ce face Stream.toList
toList() este cea mai simplă operație finală: pune toate elementele, în ordine, într-o List. Lista returnată nu se poate modifica: add, remove sau set aruncă UnsupportedOperationException. Dacă ai nevoie de o listă modificabilă, folosește collect(Collectors.toCollection(ArrayList::new)) sau new ArrayList<>(...).
toArray() fără argumente returnează un Object[]. Pentru un tablou de tipul corect, dai constructorul tabloului: toArray(String[]::new).
Parametri
| Parametru | Descriere |
|---|---|
generator |
Pentru toArray: funcția care creează tabloul, de obicei Tip[]::new. |
Ce returnează
O List<T> nemodificabilă (toList) sau un tablou (toArray).
Exemple
Exemplul 1: Listă și tablou din același stream de date
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> orase = List.of("iași", "cluj", "arad");
List<String> lista = orase.stream().map(String::toUpperCase).toList();
System.out.println(lista);
String[] tablou = orase.stream().map(String::toUpperCase).toArray(String[]::new);
System.out.println(Arrays.toString(tablou) + " are " + tablou.length + " elemente");
Object[] obiecte = orase.stream().toArray();
System.out.println(obiecte.getClass().getSimpleName());
}
}
Rezultat
[IAȘI, CLUJ, ARAD]
[IAȘI, CLUJ, ARAD] are 3 elemente
Object[]
Exemplul 2: Lista de la toList nu se poate modifica
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
List<Integer> note = Stream.of(7, 9, 10).toList();
try {
note.add(8);
} catch (UnsupportedOperationException e) {
System.out.println("Nu pot adăuga în lista de la toList().");
}
List<Integer> modificabila = new ArrayList<>(Stream.of(7, 9, 10).toList());
modificabila.add(8);
System.out.println(modificabila);
}
}
Rezultat
Nu pot adăuga în lista de la toList().
[7, 9, 10, 8]
Greșeli frecvente
- Încerci să adaugi în lista de la
toList(). Este nemodificabilă; copiaz-o într-oArrayListsau foloseșteCollectors.toCollection(ArrayList::new). - Faci cast la
(String[]) stream.toArray(). Tabloul este de faptObject[]și primeștiClassCastException; foloseștetoArray(String[]::new). - Pui
nullîn stream și te aștepți la eroare ca laList.of.toList()acceptă valorinull.
Comenzi înrudite
Stream.collect: Adună elementele într-un rezultat (listă, set, map, text) folosind un Collector, de obicei din clasa Collectors.Collectors.toList: Adună elementele stream-ului într-o listă (toList), într-o mulțime fără duplicate (toSet) sau într-o listă ce nu se poate modifica.Stream.forEach: Rulează o acțiune (de obicei o afișare) pentru fiecare element; forEachOrdered păstrează ordinea și la stream-uri paralele.Stream: Un șir de valori prelucrate pas cu pas: filtrezi, transformi, sortezi și aduni rezultatul, fără bucle scrise de mână.