Приведи пример промежуточных операций в Stream API

«Приведи пример промежуточных операций в Stream API» — вопрос из категории Java, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Stream API промежуточные операции (intermediate operations) обрабатывают элементы потока и возвращают новый поток. Они "ленивые" - выполняются только при вызове терминальной операции.

Примеры промежуточных операций:

List<String> names = Arrays.asList("John", "Alice", "Bob", "Eve");

// Фильтрация
Stream<String> filtered = names.stream()
    .filter(name -> name.length() > 3);

// Преобразование (map)
Stream<Integer> lengths = names.stream()
    .map(String::length);

// Сортировка
Stream<String> sorted = names.stream()
    .sorted();

// Уникальные элементы
Stream<String> distinct = names.stream()
    .distinct();

// Пропуск первых N элементов
Stream<String> skipped = names.stream()
    .skip(2);

// Ограничение количества элементов
Stream<String> limited = names.stream()
    .limit(3);

Можно объединять операции в цепочки:

List<String> result = names.stream()
    .filter(name -> name.length() > 3)
    .map(String::toUpperCase)
    .sorted()
    .collect(Collectors.toList());