Ответ
В Java Stream API существует несколько основных способов создания потоков.
1. Из коллекций (наиболее частый случай):
List<String> list = List.of("A", "B", "C");
Stream<String> streamFromList = list.stream();
Stream<String> parallelStream = list.parallelStream();
2. Из массивов:
String[] array = {"A", "B", "C"};
Stream<String> streamFromArray = Arrays.stream(array);
// Для примитивов:
IntStream intStream = Arrays.stream(new int[]{1, 2, 3});
3. Используя фабричные методы Stream.of():
Stream<String> streamOfElements = Stream.of("A", "B", "C");
4. Генерация бесконечных потоков:
// Генерация последовательности (0, 2, 4, 6...)
Stream<Integer> evenNumbers = Stream.iterate(0, n -> n + 2);
// Генерация случайных чисел
Stream<Double> randomNumbers = Stream.generate(Math::random);
5. Из файлов (NIO.2):
Stream<String> lines = Files.lines(Paths.get("data.txt"));
6. Специализированные потоки для примитивов:
IntStream range = IntStream.range(1, 10); // 1..9
LongStream longStream = LongStream.of(1L, 2L);
DoubleStream randomDoubles = DoubleStream.generate(Math::random);
7. Из String (символов или кодовых точек):
IntStream charCodes = "text".chars();