Sobes.tech
Junior — Middle
76

Какие типы данных и операции обрабатывает структура данных Stream в Java?

Answer from AI

sobes.tech AI

В Java структура данных Stream представляет последовательность элементов, поддерживающую различные операции для обработки данных в функциональном стиле.

Типы данных:

  • Stream<T> работает с любыми объектами типа T.
  • Есть специализированные потоки для примитивов: IntStream, LongStream, DoubleStream.

Основные операции:

  1. Промежуточные (intermediate) — возвращают новый поток, позволяют строить цепочку операций:

    • filter(Predicate) — фильтрация элементов.
    • map(Function) — преобразование элементов.
    • sorted() — сортировка.
    • distinct() — удаление дубликатов.
    • limit(long maxSize) — ограничение количества элементов.
  2. Терминальные (terminal) — завершают обработку и возвращают результат:

    • collect(Collector) — сбор элементов в коллекцию.
    • forEach(Consumer) — выполнение действия для каждого элемента.
    • reduce(BinaryOperator) — свертка элементов.
    • count() — подсчет элементов.

Пример:

List<String> names = Arrays.asList("Anna", "Bob", "Charlie", "David");

List<String> filtered = names.stream()
    .filter(name -> name.startsWith("A"))
    .map(String::toUpperCase)
    .collect(Collectors.toList());

System.out.println(filtered); // [ANNA]

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