README.md

    Stream API


    BaseStream

    В основе Stream API лежит интерфейс BaseStream (java.util.stream.BaseStream):

    interface BaseStream<T, S extends BaseStream<T, S>>

    От интерфейса BaseStream наследуется ряд интерфейсов, предназначенных для создания конкретных потоков:

    Stream<T>: используется для потоков данных, представляющих любой ссылочный тип

    IntStream: используется для потоков с типом данных int

    DoubleStream: используется для потоков с типом данных double

    LongStream: используется для потоков с типом данных long

    BaseStream определяет базовый функционал для работы с потоками, который реализуется через его методы:

    void close(): закрывает поток

    boolean isParallel(): возвращает true, если поток является параллельным

    Iterator<Т> iterator(): возвращает ссылку на итератор потока

    Spliterator<Т> spliterator(): возвращает ссылку на сплитератор потока

    S parallel(): возвращает параллельный поток (параллельные потоки могут задействовать несколько ядер процессора в многоядерных архитектурах)

    S sequential(): возвращает последовательный поток

    S unordered(): возвращает неупорядоченный поток

    Промежуточные (Intermediate)

    Возвращают преобразованный поток. Такие операции промежуточные и возвращают другой поток.

    filter: возвращает поток, включающий элементы, соответствующие предикату

    map: возвращает поток, состоящий из элементов, полученных с помощью применения функции (преобразует каждый элемент)

    limit: возвращает поток, состоящий из первых n элементов этого потока

    distinct: возвращает поток, который имеет только уникальные элементы в соответствии с методом equals

    sorted: возвращает поток, состоящий из элементов, отсортированных в соответствии с естественным порядком или заданным компаратором

    flatMap: позволяет заменить значение потоком и объединить все потоки вместе

    Терминальные (Terminal)

    Возвращают конкретный результат. Stream завершается терминальной операцией.

    collect(toList): возвращает список из значений в потоке, в общем случае сбор является более сложной операцией

    toArray: возвращает массив из значений в потока

    max / min: возвращает максимальный / минимальный элемент потока в соответствии с заданным компаратором

    count: возвращает число элементов в stream

    forEach: выполняет операцию для каждого элемента потока (есть побочные эффекты!)

    reduce: объединяет значения из потока в одно значение (агрегатное значение)

    anyMatch: возвращает true, если хотя бы один элемент соответствует предикату (см. также: allMatch, noneMatch)

    Конвейеры
    0 успешных
    0 с ошибкой