Назад к вопросам
Junior
69
questionbank

Что такое Stream в контексте Stream API?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Stream (поток) в контексте Java Stream API — это последовательность элементов, над которыми можно выполнять различные операции.

Основные характеристики Stream API:

  • Не является структурой данных: Stream не хранит данные, а работает с ними по мере необходимости.
  • Ленивый: Operations (промежуточные) выполняются только при вызове терминальной операции.
  • Потребляется один раз: После выполнения терминальной операции поток считается исчерпанным и не может использоваться повторно.
  • Поддерживает конвейер операций: Промежуточные операции возвращают новый поток, позволяя создавать цепочки (конвейеры).

Пример использования:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

// Создание списка чисел
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// Использование Stream API для фильтрации четных чисел и сбора их в новый список
List<Integer> evenNumbers = numbers.stream() // Создание потока из списка
                                 .filter(n -> n % 2 == 0) // Промежуточная операция: фильтрация
                                 .collect(Collectors.toList()); // Терминальная операция: сборка в список

// Вывод результата (для демонстрации)
// evenNumbers.forEach(System.out::println);

Типы операций:

Тип операции Описание Примеры
Промежуточные Возвращают новый поток. Ленивые. Могут быть объединены в конвейер. filter(), map(), sorted(), distinct()
Терминальные Производят окончательный результат. Не возвращают поток. Завершают конвейер. forEach(), collect(), reduce(), count(), anyMatch()

Stream API позволяет писать более декларативный и читаемый код для обработки коллекций данных.