Sobes.tech
Junior — Middle

Milyen viselkedés mutatkozik a Stream API-ban, ha hiányzik a végső művelet?

sobes.tech MI

Válasz az MI-től

A Java Stream API-ban a műveletek köztes és végső műveletekre vannak osztva. A köztes műveletek (pl. filter, map) késlekedőek, és nem hajtódnak végre, amíg nem hívják meg a végső műveletet (pl. collect, forEach).

Ha a végső művelet nem kerül meghívásra, a stream nem lesz feldolgozva, és nem történik számítás. Ez azt jelenti, hogy a köztes műveletek láncolata csak a stream leírását hozza létre, de nem hajtódik végre.

Példa:

Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2);
// Egyik elem sem lesz feldolgozva, mivel nincs végső művelet

A feldolgozás elindításához meg kell hívni egy végső műveletet:

List<Integer> result = Stream.of(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 2)
    .collect(Collectors.toList());

Végső művelet nélkül a stream nem fog végrehajtódni.