Junior — Middle
როდის ხდება Stream-ის ინიციალიზაცია Stream API-ს გამოყენებისას?
sobes.tech AI
პასუხი AI-სგან
Java-ში Stream-ის ინიციალიზაცია ხდება მაშინ, როდესაც გამოძახება ხდება ტერმინალური ოპერაციის. მანამდე, Stream-ზე ოპერაციები არიან მავნე (lazy) და არ ხორციელდება.
მაშინ, როდესაც ქმნით Stream-ს და იყენებთ შუამავლო ოპერაციებს (მაგალითად, filter(), map()), ისინი მხოლოდ ქმნიან დამუშავების ჯაჭვს, მაგრამ არ იწყებენ გამოთვლებს.
მაგალითად:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase);
// აქ არაფერი ხდება
List<String> result = stream.collect(Collectors.toList()); // ტერმინალური ოპერაცია
// აქ იწყება ელემენტების დამუშავება
ამიტომ, Stream ინიცირებულია და იწყებს მონაცემების დამუშავებას მხოლოდ მაშინ, როდესაც გამოძახება ხდება ტერმინალური ოპერაციის, როგორიცაა collect(), forEach(), reduce() და სხვა.