Sobes.tech
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() და სხვა.