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.