Sobes.tech
Junior — Middle

Μπορεί η τερματική μέθοδος να εφαρμόζεται επανειλημμένα σε ένα μόνο ρεύμα στην API Stream για Java;

sobes.tech AI

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

Όχι, η τερματική μέθοδος στην API Stream της Java μπορεί να εφαρμοστεί μόνο μία φορά σε ένα ρεύμα. Μετά την κλήση μιας τερματικής μεθόδου, το ρεύμα θεωρείται κλειστό και η επαναχρησιμοποίησή του θα οδηγήσει σε IllegalStateException.

Εάν χρειάζεται να εκτελέσετε πολλές λειτουργίες, πρέπει να δημιουργήσετε ένα νέο ρεύμα από τη συλλογή ή την αρχική πηγή δεδομένων.

Παράδειγμα:

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
long count = stream.count(); // τερματική μέθοδος
// stream.forEach(System.out::println); // θα προκαλέσει IllegalStateException

// Σωστό:
list.stream().forEach(System.out::println);