Sobes.tech
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() и др.