Sobes.tech
Back to questions
Junior — Middle
59

Можно ли передавать поток как параметр в методы Stream API?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В Java Stream API нельзя напрямую передавать поток (Stream) как параметр в методы, которые ожидают коллекции или массивы, но вы можете передавать сам объект Stream как параметр метода, если метод принимает Stream.

Однако важно помнить, что потоки в Java одноразовые — после выполнения терминальной операции поток становится закрытым и не может быть использован повторно.

Пример передачи Stream в метод:

public void processStream(Stream<String> stream) {
    stream.filter(s -> s.startsWith("A"))
          .forEach(System.out::println);
}

// Вызов
Stream<String> myStream = Stream.of("Apple", "Banana", "Avocado");
processStream(myStream);

Если же метод ожидает коллекцию, то можно передавать коллекцию, а внутри метода создавать поток.

Таким образом, поток можно передавать как параметр, если метод это поддерживает, но нельзя использовать один и тот же поток несколько раз, и нельзя передавать поток туда, где ожидается коллекция или массив без преобразования.