Junior
Kokia yra pagrindinė Stream API idėja Java?
sobes.tech AI
Atsakymas iš AI
Pagrindinė Stream API idėja yra pateikti deklaratyvų būdą apdoroti duomenų rinkinius. Vietoje imperatyvaus iteracinio požiūrio su aiškiu ciklų ir būsenų valdymu, srautai leidžia aprašyti ką reikia padaryti su duomenimis (filtravimas, transformavimas, agregavimas), paliekant kaip tai padaryti API.
Pagrindinės sąvokos:
- Neįmanoma pakeisti: Srautai nepakeičia pradinio duomenų šaltinio. Operacijos su srautais kuria naujus srautus arba rezultatus.
- Atsilikimas: Daugelis srautų operacijų, tokių kaip
filter()irmap(), yra tarpinės. Jos nevykdomos tol, kol nėra iškviesta galutinė operacija, pavyzdžiui,collect()arbaforEach(). Tai leidžia optimizuoti vykdymą. - Vamzdynas: Srautų operacijos gali būti sujungtos į vamzdyną. Kiekvienas elementas praeina per vamzdyną nuosekliai arba lygiagrečiai.
- Lygiagreti apdorojimas: Srautai sukurti taip, kad būtų lengva juos apdoroti lygiagrečiai, dažnai su minimaliais kodo pakeitimais (
parallelStream()).
Privalumai:
- Skaityti ir išraiškingesnis kodas sudėtingoms kolekcijų operacijoms.
- Lengvas lygiagretinimas.
- Pašalina boilerplate kodą, susijusį su iteracijomis.
// Pavyzdys: Filtravimas ir transformavimas sąrašo eilučių
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<Integer> lengths = names.stream()
.filter(name -> name.startsWith("A")) // Tarpinė operacija
.map(String::length) // Tarpinė operacija
.collect(Collectors.toList()); // Galutinė operacija
// lengths bus [5]