Junior — Middle
Kada įvyksta Stream inicijavimas naudojant Stream API?
sobes.tech AI
Atsakymas iš AI
„Java“ srauto inicializacija įvyksta tada, kai iškviečiama terminalo operacija. Iki to momento, operacijos su srautu yra tingios (lazy) ir nevykdomos.
Tai reiškia, kad sukūrus srautą ir taikant tarpinės operacijas (pvz., filter(), map()), jos tik sudaro apdorojimo grandinę, bet nepradeda skaičiavimų.
Pavyzdys:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase);
// Čia nieko nevyksta
List<String> result = stream.collect(Collectors.toList()); // Terminalo operacija
// Čia vyksta elementų apdorojimas
Taigi, srautas inicijuojamas ir pradeda apdoroti duomenis tik iškvietus terminalo operaciją, pvz., collect(), forEach(), reduce() ir kt.