Middle
De ce sunt folosiți stream-urile în noua versiune de Java?
sobes.tech AI
Răspuns de la AI
Utilizarea streamurilor în versiunile mai noi ale Java (începând cu Java 8) se datorează mai multor motive legate de eficiență, lizibilitatea codului și procesarea paralelă a datelor:
- Programare funcțională: Streamurile permit scrierea codului într-un stil mai declarativ, concentrându-se pe ce trebuie făcut cu datele, nu pe cum. Acest lucru îmbunătățește lizibilitatea și întreținerea.
- Procesare paralelă: Streamurile facilitează paralelizarea operațiilor pe colecții folosind
parallelStream(). JVM gestionează împărțirea datelor și unirea rezultatelor, simplificând dezvoltarea aplicațiilor multi-thread. - Eficiență: Evaluarea leneșă (lazy evaluation) în streamuri înseamnă că operațiile sunt executate doar când este nevoie, reducând costurile. Operațiile intermediare (map, filter) nu se execută imediat până la apelarea unei operații terminale (collect, forEach).
- Îmbunătățirea procesării colecțiilor: Oferă un set de operații standard și de nivel înalt pentru filtrare, mapare și agregare de date în colecții, reducând cantitatea de cod repetitiv cu bucle.
- Operații imutabile: Streamurile nu modifică colecția originală din care sunt create, susținând principiile imutabilității și facilitând depanarea.
// Exemplu de utilizare a streamurilor pentru filtrare și mapare
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Crearea unui stream
.filter(name -> name.startsWith("C")) // Filtrare
.map(String::toUpperCase) // Mapare
.collect(Collectors.toList()); // Colectare într-o listă nouă
System.out.println(filteredNames); // Afișează: [CHARLIE]
Streamuri paralele:
// Exemplu de procesare paralelă într-un stream
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.parallelStream() // Crearea unui stream paralel
.mapToInt(Integer::intValue) // Conversie în IntStream
.sum(); // Suma
System.out.println(sum); // Afișează: 55 (poate fi calculat mai rapid pe sisteme multi-core)