Sobes.tech
Junior — Middle

შესაძლებელია თუ არა ერთ მონაცემთა ნაკადში რამდენიმე ტერმინალური ოპერაციის დაუსრულებლად შესრულება?

sobes.tech AI

პასუხი AI-სგან

Java Stream API-ში ერთავე მონაცემთა ნაკადზე ერთდროულად რამდენიმე ტერმინალური ოპერაციის განხორციელება შეუძლებელია. ტერმინალური ოპერაცია ხურავს ნაკადს, და მისი გამოძახების შემდეგ, ნაკადი აღარ არის ხელმისაწვდომი დამატებითი ოპერაციებისათვის.

თუ საჭიროა სხვადასხვა ოპერაციების შესრულება, უნდა შექმნათ ახალი ნაკადი ორიგინალური მონაცემებიდან ან გამოიყენოთ შუამავლო ოპერაციები, რომლებიც არ ხურავენ ნაკადს.

არასწორი გამოყენების მაგალითი:

Stream<String> stream = Stream.of("a", "b", "c");
long count = stream.count(); // ტერმინალური ოპერაცია
stream.forEach(System.out::println); // შეცდომა: ნაკადი უკვე დახურულია

სწორი:

Stream<String> stream1 = Stream.of("a", "b", "c");
long count = stream1.count();

Stream<String> stream2 = Stream.of("a", "b", "c");
stream2.forEach(System.out::println);