Stream
в Java – это новый абстрактный интерфейс, представленный в Java 8 в пакете java.util.stream
. Он предназначен для удобной и эффективной обработки данных в коллекциях (например, списки, множества, карты) с использованием функционального программирования.
Stream
предоставляет набор методов для выполнения операций над данными, таких как фильтрация, сопоставление, редукция и других. Операции могут быть выполнены последовательно или параллельно, что позволяет использовать преимущества многозадачности при обработке данных.
Вот несколько основных характеристик Stream
:
- Неизменяемость (Immutability): Операции
Stream
не изменяют исходные данные. Вместо этого они создают новыйStream
, который содержит результат операции. Это делаетStream
неизменяемым и предсказуемым. - Ленивость (Laziness): Операции
Stream
могут быть ленивыми, что означает, что они могут быть выполнены только тогда, когда реально требуется результат. Это позволяет избежать избыточных вычислений. - Композиция операций (Composition): Множество операций
Stream
может быть объединено в цепочку для выполнения сложных операций. Это делает код более читаемым и компактным.
Пример использования Stream
:
java
import java.util.Arrays; import java.util.List; public class StreamExample { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "orange", "grape", "watermelon"); // Создание Stream из коллекции и выполнение операций long count = words.stream() .filter(word -> word.length() > 5) .map(String::toUpperCase) .count(); System.out.println("Количество слов с длиной более 5: " + count); } }
В этом примере создается Stream
из списка слов, фильтруются слова с длиной более 5 символов, затем все слова преобразуются в верхний регистр, и, наконец, подсчитывается количество слов в результирующем Stream
.
Использование Stream
позволяет писать более выразительный и функциональный код для обработки данных в Java.