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 κ.λπ.), το ρεύμα δεν θα επεξεργαστεί και οι υπολογισμοί δεν θα πραγματοποιηθούν.