Sobes.tech
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.