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