Junior — Middle
Mikor történik a Stream inicializálása a Stream API használata során?
sobes.tech MI
Válasz az MI-től
A Java-ban a Stream inicializálása akkor történik, amikor egy terminális műveletet hívunk meg. Eddig a pontig a Stream feletti műveletek késleltetettek (lazy), és nem hajtódnak végre.
Vagyis, amikor létrehozol egy Stream-et és közbenső műveleteket (például filter(), map()) alkalmazol, ezek csak az adatfeldolgozási láncot alkotják, de nem indítanak számításokat.
Példa:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase);
// Itt semmi sem történik
List<String> result = stream.collect(Collectors.toList()); // Terminális művelet
// Itt történik az elemek feldolgozása
Ezért a Stream csak akkor inicializálódik és kezd el adatokat feldolgozni, amikor egy terminális műveletet hívunk meg, például collect(), forEach(), reduce(), stb.