Что такое Stream в Java?

Stream в Java – это новый абстрактный интерфейс, представленный в Java 8 в пакете java.util.stream. Он предназначен для удобной и эффективной обработки данных в коллекциях (например, списки, множества, карты) с использованием функционального программирования.

Stream предоставляет набор методов для выполнения операций над данными, таких как фильтрация, сопоставление, редукция и других. Операции могут быть выполнены последовательно или параллельно, что позволяет использовать преимущества многозадачности при обработке данных.

Вот несколько основных характеристик Stream:

  1. Неизменяемость (Immutability): Операции Stream не изменяют исходные данные. Вместо этого они создают новый Stream, который содержит результат операции. Это делает Stream неизменяемым и предсказуемым.
  2. Ленивость (Laziness): Операции Stream могут быть ленивыми, что означает, что они могут быть выполнены только тогда, когда реально требуется результат. Это позволяет избежать избыточных вычислений.
  3. Композиция операций (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.