Ответ
Stream API в Java предоставляет несколько типов операций. Вот ключевые примеры:
1. Промежуточные операции (Intermediate):
filter(Predicate<T>)— фильтрация по условию.List<Integer> evens = Stream.of(1, 2, 3, 4) .filter(n -> n % 2 == 0) .collect(Collectors.toList()); // [2, 4]map(Function<T, R>)— преобразование каждого элемента.List<Integer> lengths = Stream.of("Java", "Stream") .map(String::length) .collect(Collectors.toList()); // [4, 6]sorted()/sorted(Comparator<T>)— сортировка.List<String> sorted = Stream.of("Beta", "Alpha") .sorted() .collect(Collectors.toList()); // ["Alpha", "Beta"]distinct()— удаление дубликатов.limit(long n)— ограничение количества элементов.
2. Терминальные операции (Terminal):
reduce(BinaryOperator<T>)— свертка элементов в одно значение.Optional<Integer> sum = Stream.of(1, 2, 3) .reduce(Integer::sum); // Optional[6]collect(Collector)— сбор элементов в коллекцию или другую структуру.forEach(Consumer<T>)— выполнение действия для каждого элемента.count()— подсчет количества элементов.
Важно: Промежуточные операции «ленивы» и выполняются только при вызове терминальной операции.