Junior
Care este ideea principală a API-ului Stream în Java?
sobes.tech AI
Răspuns de la AI
Ideea principală a API-ului Stream constă în furnizarea unei modalități declarative de procesare a colecțiilor de date. În locul unei abordări imperative iterative cu control explicit al buclelor și stărilor, stream-urile permit descrierea ce trebuie făcut cu datele (filtrare, transformare, agregare), lăsând implementarea cum să fie în API.
Concepte cheie:
- Invariabilitate: Stream-urile nu modifică sursa de date originală. Operațiile pe stream-uri creează noi stream-uri sau rezultate.
- Evaluare leneșă: Multe operații ale stream-ului, precum
filter()șimap(), sunt operații intermediare. Ele nu se execută până când nu este apelată o operație terminală, precumcollect()sauforEach(). Acest lucru permite optimizarea execuției. - Pipeline: Operațiile stream-ului pot fi combinate într-un pipeline. Fiecare element trece prin pipeline în mod secvențial sau paralel.
- Procesare paralelă: Stream-urile sunt proiectate pentru a facilita procesarea paralelă a datelor, adesea cu modificări minime ale codului (
parallelStream()).
Avantaje:
- Cod mai ușor de citit și mai expresiv pentru operații complexe cu colecții.
- Ușurință în paralelizare.
- Eliminarea codului boilerplate asociat cu iterațiile.
// Exemplu: Filtrarea și transformarea unei liste de șiruri
List<String> nume = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<Integer> lungimi = nume.stream()
.filter(n -> n.startsWith("A")) // Operație intermediară
.map(String::length) // Operație intermediară
.collect(Collectors.toList()); // Operație terminală
// lungimi va conține [5]