Sobes.tech
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() și map(), sunt operații intermediare. Ele nu se execută până când nu este apelată o operație terminală, precum collect() sau forEach(). 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]