Sobes.tech
Junior — Middle

Θα εκτελεστεί η ροή δεδομένων χωρίς να ξεκινήσει η τελική λειτουργία;

sobes.tech AI

Απάντηση από AI

Στην Java, ένα ρεύμα δεδομένων (stream) δεν θα εκτελεστεί χωρίς την κλήση μιας τελικής λειτουργίας (terminal operation). Τα ρεύματα στην Java είναι τεμπέλικα: οι ενδιάμεσες λειτουργίες (π.χ., map, filter) περιγράφουν μόνο μετατροπές, αλλά δεν εκτελούνται άμεσα.

Παράδειγμα:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Εδώ δεν συμβαίνει τίποτα, καθώς δεν υπάρχει τελική λειτουργία

List<Integer> result = stream.collect(Collectors.toList()); // Τελευταία λειτουργία, ξεκινά τους υπολογισμούς

Χωρίς την κλήση μιας τελικής λειτουργίας (collect, forEach, reduce κ.λπ.), το ρεύμα δεν θα επεξεργαστεί και οι υπολογισμοί δεν θα πραγματοποιηθούν.