Junior — Middle
Кога се случва инициализацията на Stream при използване на Stream API?
sobes.tech AI
Отговор от AI
Инициализацията на Stream в Java се случва в момента, когато се извика терминална операция. До този момент операциите върху 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() и др.