Sobes.tech
Junior — Middle

Tudja magyarázni, mit jelent a 'nem terminális művelet' kifejezés az adatfolyamokkal való munkában a Stream API-ban?

sobes.tech MI

Válasz az MI-től

A Java Stream API-ban az műveletek terminális és nem terminális (köztes) műveletekre vannak osztva.

A nem terminális művelet olyan művelet, amely egy új áramlatot (Stream) ad vissza, és nem indítja el az adatok feldolgozását azonnal. Szolgál a transzformációk láncolatának felépítésére, például szűrés, térképezés, rendezés.

Nem terminális műveletek példái:

  • filter()
  • map()
  • sorted()
  • distinct()

Ezek a műveletek késleltetettek: csak akkor hajtódnak végre, amikor egy terminális műveletet hívnak meg, például, forEach(), collect(), count().

Példa:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // nem terminális
    .map(String::toUpperCase)    // nem terminális
    .forEach(System.out::println); // terminális

Így a nem terminális műveletek lehetővé teszik a transzformációk láncolatának építését, míg a terminális elindítja a végrehajtást.