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 და სხვა), ნაკადი არ დამუშავდება და გამოთვლები არ მოხდება.