Spec-Zone.ru › OpenJDK 27

Интерфейс LongStream

Все суперинтерфейсы:
AutoCloseable, BaseStream<Long, LongStream>
public interface LongStream extends BaseStream<Long, LongStream>
Последовательность элементов примитивного типа long, поддерживающая последовательные и параллельные агрегатные операции. Это long примитивная специализация Stream.

Следующий пример иллюстрирует агрегатную операцию с использованием Stream и LongStream, вычисляющую суммарный вес красных виджетов:

    long sum = widgets.stream()
                      .filter(w -> w.getColor() == RED)
                      .mapToLong(w -> w.getWeight())
                      .sum();
Дополнительные сведения о потоках, операциях над потоками, конвейерах потоков и параллелизме см. в документации класса Stream и документации пакета java.util.stream.
Начиная с:
1.8
См. также:
  • Stream
  • java.util.stream

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  LongStream.Builder
Изменяемый построитель для LongStream.
static interface  LongStream.LongMapMultiConsumer
Представляет операцию, принимающую аргумент типа long и LongConsumer и не возвращающую результат.

Краткое описание методов

Модификатор и тип Метод Описание
boolean allMatch(LongPredicate predicate)
Возвращает true, если все элементы этого потока удовлетворяют заданному предикату.
boolean anyMatch(LongPredicate predicate)
Возвращает true, если хотя бы один элемент этого потока удовлетворяет заданному предикату.
DoubleStream asDoubleStream()
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double.
OptionalDouble average()
Возвращает OptionalDouble, содержащий среднее арифметическое элементов этого потока, или пустой optional, если поток пуст.
Stream<Long> boxed()
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Long.
static LongStream.Builder builder()
Возвращает построитель для LongStream.
<R> R collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет операцию изменяемой редукции над элементами этого потока.
static LongStream concat(LongStream a, LongStream b)
Создает лениво конкатенируемый поток, элементы которого состоят из всех элементов первого потока, за которыми следуют все элементы второго потока.
long count()
Возвращает количество элементов в этом потоке.
LongStream distinct()
Возвращает поток, состоящий из уникальных элементов этого потока.
default LongStream dropWhile(LongPredicate predicate)
Если этот поток упорядочен, возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания самого длинного начального префикса элементов, удовлетворяющих заданному предикату.
static LongStream empty()
Возвращает пустой последовательный LongStream.
LongStream filter(LongPredicate predicate)
Возвращает поток, состоящий из элементов этого потока, удовлетворяющих заданному предикату.
OptionalLong findAny()
Возвращает OptionalLong, содержащий некоторый элемент потока, или пустой OptionalLong, если поток пуст.
OptionalLong findFirst()
Возвращает OptionalLong, содержащий первый элемент этого потока, или пустой OptionalLong, если поток пуст.
LongStream flatMap(LongFunction<? extends LongStream> mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым отображенного потока, созданного путем применения заданной функции отображения к каждому элементу.
void forEach(LongConsumer action)
Выполняет действие для каждого элемента этого потока.
void forEachOrdered(LongConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя обработку элементов в порядке их появления для потоков с определенным порядком появления.
static LongStream generate(LongSupplier s)
Возвращает бесконечный неупорядоченный последовательный поток, каждый элемент которого генерируется заданным LongSupplier.
static LongStream iterate(long seed, LongPredicate hasNext, LongUnaryOperator next)
Возвращает упорядоченный последовательный LongStream, созданный путем итеративного применения заданной функции next к начальному элементу при условии, что он удовлетворяет заданному предикату hasNext.
static LongStream iterate(long seed, LongUnaryOperator f)
Возвращает бесконечный упорядоченный последовательный LongStream, созданный путем итеративного применения функции f к начальному элементу seed, в результате чего создается Stream, состоящий из seed, f(seed), f(f(seed)) и т. д.
LongStream limit(long maxSize)
Возвращает поток, состоящий из элементов этого потока, усеченный до длины не более maxSize.
LongStream map(LongUnaryOperator mapper)
Возвращает поток, состоящий из результатов применения заданной функции к элементам этого потока.
default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока несколькими элементами, а именно нулем или более элементами.
DoubleStream mapToDouble(LongToDoubleFunction mapper)
Возвращает DoubleStream, состоящий из результатов применения заданной функции к элементам этого потока.
IntStream mapToInt(LongToIntFunction mapper)
Возвращает IntStream, состоящий из результатов применения заданной функции к элементам этого потока.
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Возвращает Stream со значениями типа Object, состоящий из результатов применения заданной функции к элементам этого потока.
OptionalLong max()
Возвращает OptionalLong, содержащий максимальный элемент этого потока, или пустой optional, если поток пуст.
OptionalLong min()
Возвращает OptionalLong, содержащий минимальный элемент этого потока, или пустой optional, если поток пуст.
boolean noneMatch(LongPredicate predicate)
Возвращает true, если ни один элемент этого потока не удовлетворяет заданному предикату.
static LongStream of(long t)
Возвращает последовательный LongStream, содержащий один элемент.
static LongStream of(long... values)
Возвращает упорядоченный последовательный поток, элементы которого — заданные значения.
LongStream peek(LongConsumer action)
Возвращает поток, состоящий из элементов этого потока и дополнительно выполняющий заданное действие над каждым элементом по мере его извлечения из результирующего потока.
static LongStream range(long startInclusive, long endExclusive)
Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endExclusive (не включая) с шагом 1.
static LongStream rangeClosed(long startInclusive, long endInclusive)
Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endInclusive (включительно) с шагом 1.
long reduce(long identity, LongBinaryOperator op)
Выполняет редукцию элементов этого потока, используя заданное начальное значение и ассоциативную функцию накопления, и возвращает редуцированное значение.
OptionalLong reduce(LongBinaryOperator op)
Выполняет редукцию элементов этого потока с использованием ассоциативной функции накопления и возвращает OptionalLong, содержащий редуцированное значение, если оно есть.
LongStream skip(long n)
Возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания первых n элементов.
LongStream sorted()
Возвращает поток, состоящий из элементов этого потока, упорядоченных по возрастанию.
long sum()
Возвращает сумму элементов этого потока.
LongSummaryStatistics summaryStatistics()
Возвращает LongSummaryStatistics, содержащий сводные данные об элементах этого потока.
default LongStream takeWhile(LongPredicate predicate)
Если этот поток упорядочен, возвращает поток, состоящий из самого длинного начального префикса его элементов, удовлетворяющих заданному предикату.
long[] toArray()
Возвращает массив, содержащий элементы этого потока.

Методы, объявленные в интерфейсе BaseStream

close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered
Модификатор и тип Метод Описание
void close()
Закрывает этот поток, вызывая все обработчики закрытия конвейера этого потока.
boolean isParallel()
Возвращает true, если при выполнении терминальной операции этот поток будет обрабатываться параллельно.
Iterator<Long> iterator()
Возвращает итератор элементов этого потока.
LongStream onClose(Runnable closeHandler)
Возвращает эквивалентный поток с дополнительным обработчиком закрытия.
LongStream parallel()
Возвращает эквивалентный параллельный поток.
LongStream sequential()
Возвращает эквивалентный последовательный поток.
Spliterator<Long> spliterator()
Возвращает сплитератор элементов этого потока.
LongStream unordered()
Возвращает эквивалентный неупорядоченный поток.

Подробное описание методов

filter

LongStream filter(LongPredicate predicate)
Возвращает поток, состоящий из элементов этого потока, соответствующих заданному предикату.

Это промежуточная операция.

Параметры:
predicate — предикат, который должен быть не мешающим и без сохранения состояния; применяется к каждому элементу, чтобы определить, следует ли включить его в поток
Возвращает:
новый поток

map

LongStream map(LongUnaryOperator mapper)
Возвращает поток, состоящий из результатов применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния; применяется к каждому элементу
Возвращает:
новый поток

mapToObj

<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Возвращает поток объектов Stream, состоящий из результатов применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры типа:
U — тип элементов нового потока
Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния; применяется к каждому элементу
Возвращает:
новый поток

mapToInt

IntStream mapToInt(LongToIntFunction mapper)
Возвращает IntStream, состоящий из результатов применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния; применяется к каждому элементу
Возвращает:
новый поток

mapToDouble

DoubleStream mapToDouble(LongToDoubleFunction mapper)
Возвращает DoubleStream, состоящий из результатов применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния; применяется к каждому элементу
Возвращает:
новый поток

flatMap

LongStream flatMap(LongFunction<? extends LongStream> mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым отображённого потока, созданного путём применения заданной функции отображения к каждому элементу. Каждый отображённый поток closed после добавления его содержимого в этот поток. (Если отображённый поток null, вместо него используется пустой поток.)

Это промежуточная операция.

Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния; применяется к каждому элементу и создаёт LongStream новых значений
Возвращает:
новый поток
См. также:
  • Stream.flatMap(Function)

mapMulti

default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока несколькими элементами, а именно нулём или более элементами. Замена выполняется путём применения заданной функции отображения к каждому элементу совместно с аргументом потребителя, который принимает элементы-замены. Функция отображения вызывает потребителя ноль или более раз, чтобы предоставить элементы-замены.

Это промежуточная операция.

Если аргумент потребителя используется за пределами области применения функции отображения, результаты не определены.

Требования к реализации:
Реализация по умолчанию вызывает flatMap для этого потока, передавая функцию со следующим поведением. Сначала она вызывает функцию отображения, передавая ей LongConsumer, который накапливает элементы-замены во вновь созданном внутреннем буфере. После возврата функции отображения она создаёт LongStream из внутреннего буфера. Наконец, она возвращает этот поток в flatMap.
Параметры:
mapper — функция, которая должна быть не мешающей и без сохранения состояния и создаёт элементы-замены
Возвращает:
новый поток
Начиная с версии:
16
См. также:
  • Stream.mapMulti

distinct

LongStream distinct()
Возвращает поток, состоящий из уникальных элементов этого потока.

Это промежуточная операция с сохранением состояния.

Возвращает:
новый поток

sorted

LongStream sorted()
Возвращает поток, состоящий из элементов этого потока в отсортированном порядке.

Это промежуточная операция с сохранением состояния.

Возвращает:
новый поток

peek

LongStream peek(LongConsumer action)
Возвращает поток, состоящий из элементов этого потока, дополнительно выполняя заданное действие для каждого элемента по мере его потребления из результирующего потока.

Это промежуточная операция.

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

Примечание к API:
Этот метод существует главным образом для отладки, когда требуется увидеть элементы, проходящие через определённую точку конвейера:
    LongStream.of(1, 2, 3, 4)
        .filter(e -> e > 2)
        .peek(e -> System.out.println("Filtered value: " + e))
        .map(e -> e * e)
        .peek(e -> System.out.println("Mapped value: " + e))
        .sum();

Если реализация потока может оптимизировать создание некоторых или всех элементов (например, при использовании операций с коротким замыканием, таких как findFirst, или в примере, описанном в count()), действие для этих элементов вызвано не будет.

Параметры:
action — не мешающее действие, выполняемое над элементами по мере их потребления из потока
Возвращает:
новый поток

limit

LongStream limit(long maxSize)
Возвращает поток, состоящий из элементов этого потока, усечённый до длины не более maxSize.

Это операция с коротким замыканием и промежуточная операция с сохранением состояния.

Примечание к API:
Хотя limit() обычно является дешёвой операцией в конвейерах последовательных потоков, в упорядоченных параллельных конвейерах она может быть довольно затратной, особенно при больших значениях maxSize, поскольку limit(n) должна возвращать не любые n элементов, а именно первые n элементов в порядке встречи. Использование неупорядоченного источника потока (например, generate(LongSupplier)) или снятие ограничения порядка с помощью BaseStream.unordered() может значительно ускорить limit() в параллельных конвейерах, если это допускает семантика вашей задачи. Если необходимо сохранить порядок встречи и наблюдаются низкая производительность или повышенное потребление памяти при использовании limit() в параллельных конвейерах, переключение на последовательное выполнение с помощью BaseStream.sequential() может повысить производительность.
Параметры:
maxSize — число элементов, до которого следует ограничить поток
Возвращает:
новый поток
Исключения:
IllegalArgumentException — если maxSize отрицательно

skip

LongStream skip(long n)
Возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания первых n элементов. Если поток содержит меньше n элементов, будет возвращён пустой поток.

Это промежуточная операция с сохранением состояния.

Примечание к API:
Хотя skip() обычно является дешёвой операцией в конвейерах последовательных потоков, в упорядоченных параллельных конвейерах она может быть довольно затратной, особенно при больших значениях n, поскольку skip(n) должна пропускать не любые n элементов, а именно первые n элементов в порядке встречи. Использование неупорядоченного источника потока (например, generate(LongSupplier)) или снятие ограничения порядка с помощью BaseStream.unordered() может значительно ускорить skip() в параллельных конвейерах, если это допускает семантика вашей задачи. Если необходимо сохранить порядок встречи и наблюдаются низкая производительность или повышенное потребление памяти при использовании skip() в параллельных конвейерах, переключение на последовательное выполнение с помощью BaseStream.sequential() может повысить производительность.
Параметры:
n — число начальных элементов, которые нужно пропустить
Возвращает:
новый поток
Исключения:
IllegalArgumentException — если n отрицательно

takeWhile

default LongStream takeWhile(LongPredicate predicate)
Если поток упорядочен, возвращает поток, состоящий из самой длинной начальной последовательности его элементов, соответствующих заданному предикату. В противном случае, если поток не упорядочен, возвращает поток, состоящий из подмножества его элементов, соответствующих заданному предикату.

Если поток упорядочен, самая длинная начальная последовательность — это непрерывная последовательность элементов потока, соответствующих заданному предикату. Первый элемент этой последовательности является первым элементом потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.

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

Независимо от того, упорядочен поток или нет, если все его элементы соответствуют заданному предикату, операция выбирает все элементы (результат совпадает с входными данными); если же ни один элемент потока не соответствует заданному предикату, не выбирается ни одного элемента (результатом является пустой поток).

Это операция с коротким замыканием и промежуточная операция с сохранением состояния.

Примечание к API:
Хотя takeWhile() обычно является дешёвой операцией в конвейерах последовательных потоков, в упорядоченных параллельных конвейерах она может быть довольно затратной, поскольку операция должна возвращать не любой допустимый префикс, а самый длинный префикс элементов в порядке встречи. Использование неупорядоченного источника потока (например, generate(LongSupplier)) или снятие ограничения порядка с помощью BaseStream.unordered() может значительно ускорить takeWhile() в параллельных конвейерах, если это допускает семантика вашей задачи. Если необходимо сохранить порядок встречи и наблюдаются низкая производительность или повышенное потребление памяти при использовании takeWhile() в параллельных конвейерах, переключение на последовательное выполнение с помощью BaseStream.sequential() может повысить производительность.
Требования к реализации:
Реализация по умолчанию получает spliterator этого потока, оборачивает его для поддержки семантики этой операции при обходе и возвращает новый поток, связанный с обёрнутым сплитератором. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно параллельное или последовательное выполнение, определяемое методом BaseStream.isParallel()), однако обёрнутый сплитератор может не поддерживать разбиение. При закрытии возвращаемого потока вызываются обработчики закрытия как возвращаемого потока, так и этого потока.
Параметры:
predicate — предикат, который должен быть не мешающим и без сохранения состояния; применяется к элементам для определения самой длинной начальной последовательности.
Возвращает:
новый поток
Начиная с версии:
9

dropWhile

default LongStream dropWhile(LongPredicate predicate)
Если поток упорядочен, возвращает поток, состоящий из оставшихся элементов после удаления самой длинной начальной последовательности элементов, соответствующих заданному предикату. В противном случае, если поток не упорядочен, возвращает поток, состоящий из оставшихся элементов после удаления подмножества элементов, соответствующих заданному предикату.

Если поток упорядочен, самая длинная начальная последовательность — это непрерывная последовательность элементов потока, соответствующих заданному предикату. Первый элемент этой последовательности является первым элементом потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.

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

Независимо от того, упорядочен поток или нет, если все его элементы соответствуют заданному предикату, операция удаляет все элементы (результатом является пустой поток); если же ни один элемент потока не соответствует заданному предикату, не удаляется ни одного элемента (результат совпадает с входными данными).

Это промежуточная операция с сохранением состояния.

Примечание к API:
Хотя dropWhile() обычно является дешёвой операцией в конвейерах последовательных потоков, в упорядоченных параллельных конвейерах она может быть довольно затратной, поскольку операция должна обрабатывать не любой допустимый префикс, а самый длинный префикс элементов в порядке встречи. Использование неупорядоченного источника потока (например, generate(LongSupplier)) или снятие ограничения порядка с помощью BaseStream.unordered() может значительно ускорить dropWhile() в параллельных конвейерах, если это допускает семантика вашей задачи. Если необходимо сохранить порядок встречи и наблюдаются низкая производительность или повышенное потребление памяти при использовании dropWhile() в параллельных конвейерах, переключение на последовательное выполнение с помощью BaseStream.sequential() может повысить производительность.
Требования к реализации:
Реализация по умолчанию получает spliterator этого потока, оборачивает его для поддержки семантики этой операции при обходе и возвращает новый поток, связанный с обёрнутым сплитератором. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно параллельное или последовательное выполнение, определяемое методом BaseStream.isParallel()), однако обёрнутый сплитератор может не поддерживать разбиение. При закрытии возвращаемого потока вызываются обработчики закрытия как возвращаемого потока, так и этого потока.
Параметры:
predicate — предикат, который должен быть не мешающим и без сохранения состояния; применяется к элементам для определения самой длинной начальной последовательности.
Возвращает:
новый поток
Начиная с версии:
9

forEach

void forEach(LongConsumer action)
Выполняет действие для каждого элемента этого потока.

Это терминальная операция.

В конвейерах параллельных потоков эта операция не гарантирует соблюдение порядка встречи элементов потока, поскольку это лишило бы параллельное выполнение его преимуществ. Для любого элемента действие может быть выполнено в любое время и в любом потоке, выбранном библиотекой. Если действие обращается к общему состоянию, оно отвечает за обеспечение необходимой синхронизации.

Параметры:
action — не мешающее действие, выполняемое над элементами

forEachOrdered

void forEachOrdered(LongConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя обработку элементов в порядке встречи для потоков с определённым порядком встречи.

Это терминальная операция.

Параметры:
action — не мешающее действие, выполняемое над элементами
См. также:
  • forEach(LongConsumer)

toArray

long[] toArray()
Возвращает массив, содержащий элементы этого потока.

Это терминальная операция.

Возвращает:
массив, содержащий элементы этого потока

reduce

long reduce(long identity, LongBinaryOperator op)
Выполняет сведение элементов этого потока с использованием заданного начального значения и ассоциативной функции накопления и возвращает полученное значение. Это эквивалентно:
    long result = identity;
    for (long element : this stream)
        result = accumulator.applyAsLong(result, element)
    return result;
, но не ограничивает выполнение последовательным режимом.

Значение identity должно быть нейтральным элементом для функции накопления. Это означает, что для всех x значение accumulator.apply(identity, x) равно x. Функция accumulator должна быть ассоциативной.

Это терминальная операция.

Примечание к API:
Сумма, минимум, максимум и среднее — частные случаи сведения. Суммирование потока чисел можно выразить так:
    long sum = integers.reduce(0, (a, b) -> a+b);
или более компактно:
    long sum = integers.reduce(0, Long::sum);

Хотя такой способ может показаться более громоздким по сравнению с простым изменением текущей суммы в цикле, операции сведения лучше подходят для параллельного выполнения: им не требуется дополнительная синхронизация, и риск гонок данных значительно ниже.

Параметры:
identity — нейтральное значение для функции накопления
op — ассоциативная, не мешающая, не сохраняющая состояние функция для объединения двух значений
Возвращает:
результат сведения
См. также:
  • sum()
  • min()
  • max()
  • average()

reduce

OptionalLong reduce(LongBinaryOperator op)
Выполняет сведение элементов этого потока с использованием ассоциативной функции накопления и возвращает OptionalLong, описывающий полученное значение, если оно есть. Это эквивалентно:
    boolean foundAny = false;
    long result = null;
    for (long element : this stream) {
        if (!foundAny) {
            foundAny = true;
            result = element;
        }
        else
            result = accumulator.applyAsLong(result, element);
    }
    return foundAny ? OptionalLong.of(result) : OptionalLong.empty();
, но не ограничивает выполнение последовательным режимом.

Функция accumulator должна быть ассоциативной.

Это терминальная операция.

Параметры:
op — ассоциативная, не мешающая, не сохраняющая состояние функция для объединения двух значений
Возвращает:
результат сведения
См. также:
  • reduce(long, LongBinaryOperator)

collect

<R> R collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет операцию изменяемого сведения элементов этого потока. При изменяемом сведении результат является изменяемым контейнером, например ArrayList, а элементы добавляются путём обновления состояния результата, а не замены самого результата. Это даёт результат, эквивалентный:
    R result = supplier.get();
    for (long element : this stream)
        accumulator.accept(result, element);
    return result;

Как и reduce(long, LongBinaryOperator), операции collect можно выполнять параллельно без дополнительной синхронизации.

Это терминальная операция.

Параметры типа:
R — тип изменяемого контейнера результата
Параметры:
supplier — функция, создающая новый изменяемый контейнер результата. При параллельном выполнении эта функция может вызываться несколько раз и каждый раз должна возвращать новое значение.
accumulator — ассоциативная, не мешающая, не сохраняющая состояние функция, которая должна добавлять элемент в контейнер результата.
combiner — ассоциативная, не мешающая, не сохраняющая состояние функция, принимающая два частичных контейнера результата и объединяющая их; она должна быть совместима с функцией-аккумулятором. Функция-комбайнер должна добавлять элементы из второго контейнера результата в первый.
Возвращает:
результат сведения
См. также:
  • Stream.collect(Supplier, BiConsumer, BiConsumer)

sum

long sum()
Возвращает сумму элементов этого потока. Это частный случай сведения, эквивалентный:
    return reduce(0, Long::sum);

Это терминальная операция.

Возвращает:
сумму элементов этого потока

min

OptionalLong min()
Возвращает OptionalLong, описывающий минимальный элемент этого потока, или пустой optional, если поток пуст. Это частный случай сведения, эквивалентный:
    return reduce(Long::min);

Это терминальная операция.

Возвращает:
OptionalLong, содержащий минимальный элемент этого потока, или пустой OptionalLong, если поток пуст

max

OptionalLong max()
Возвращает OptionalLong, описывающий максимальный элемент этого потока, или пустой optional, если поток пуст. Это частный случай сведения, эквивалентный:
    return reduce(Long::max);

Это терминальная операция.

Возвращает:
OptionalLong, содержащий максимальный элемент этого потока, или пустой OptionalLong, если поток пуст

count

long count()
Возвращает количество элементов в этом потоке. Это частный случай сведения, эквивалентный:
    return map(e -> 1L).sum();

Это терминальная операция.

Примечание к API:
Реализация может не выполнять конвейер потока (ни последовательно, ни параллельно), если способна вычислить количество элементов непосредственно по источнику потока. В таких случаях элементы источника не обходятся, а промежуточные операции не выполняются. Это может повлиять на поведенческие параметры с побочными эффектами, использование которых настоятельно не рекомендуется, за исключением безвредных случаев, например отладки. Например, рассмотрим следующий поток:
    LongStream s = LongStream.of(1, 2, 3, 4);
    long count = s.peek(System.out::println).count();
Число элементов, охватываемых источником потока, известно, а промежуточная операция peek не добавляет и не удаляет элементы из потока (как это может происходить при операциях flatMap или filter). Поэтому количество равно 4, и выполнять конвейер нет необходимости, а значит, побочный эффект в виде вывода элементов не произойдёт.
Возвращает:
количество элементов в этом потоке

average

OptionalDouble average()
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой optional, если поток пуст. Это частный случай сведения.

Это терминальная операция.

Возвращает:
OptionalDouble, содержащий среднее значение элементов этого потока, или пустой optional, если поток пуст

summaryStatistics

LongSummaryStatistics summaryStatistics()
Возвращает LongSummaryStatistics, описывающий различные сводные данные об элементах этого потока. Это частный случай сведения.

Это терминальная операция.

Возвращает:
LongSummaryStatistics, описывающий различные сводные данные об элементах этого потока

anyMatch

boolean anyMatch(LongPredicate predicate)
Возвращает, соответствуют ли какие-либо элементы этого потока заданному предикату. Предикат может быть применён не ко всем элементам, если для определения результата это не требуется. Если поток пуст, возвращается false, и предикат не применяется.

Это терминальная операция с коротким замыканием.

Примечание к API:
Этот метод вычисляет экзистенциальную квантификацию предиката для элементов потока (для некоторого x P(x)).
Параметры:
predicate — не мешающий, без состояния предикат, применяемый к элементам этого потока
Возвращает:
true, если какие-либо элементы потока соответствуют заданному предикату, иначе false

allMatch

boolean allMatch(LongPredicate predicate)
Возвращает, соответствуют ли все элементы этого потока заданному предикату. Предикат может быть применён не ко всем элементам, если для определения результата это не требуется. Если поток пуст, возвращается true, и предикат не применяется.

Это терминальная операция с коротким замыканием.

Примечание к API:
Этот метод вычисляет универсальную квантификацию предиката для элементов потока (для всех x P(x)). Если поток пуст, квантификация считается выполненной тривиально и всегда равна true (независимо от P(x)).
Параметры:
predicate — не мешающий, без состояния предикат, применяемый к элементам этого потока
Возвращает:
true, если все элементы потока соответствуют заданному предикату или поток пуст, иначе false

noneMatch

boolean noneMatch(LongPredicate predicate)
Возвращает, не соответствует ли ни один элемент этого потока заданному предикату. Предикат может быть применён не ко всем элементам, если для определения результата это не требуется. Если поток пуст, возвращается true, и предикат не применяется.

Это терминальная операция с коротким замыканием.

Примечание к API:
Этот метод вычисляет универсальную квантификацию отрицания предиката для элементов потока (для всех x ~P(x)). Если поток пуст, квантификация считается выполненной тривиально и всегда равна true, независимо от P(x).
Параметры:
predicate — не мешающий, без состояния предикат, применяемый к элементам этого потока
Возвращает:
true, если ни один элемент потока не соответствует заданному предикату или поток пуст, иначе false

findFirst

OptionalLong findFirst()
Возвращает OptionalLong, содержащий первый элемент этого потока, или пустой OptionalLong, если поток пуст. Если у потока нет порядка обхода, может быть возвращён любой элемент.

Это терминальная операция с коротким замыканием.

Возвращает:
OptionalLong, содержащий первый элемент этого потока, или пустой OptionalLong, если поток пуст

findAny

OptionalLong findAny()
Возвращает OptionalLong, содержащий некоторый элемент потока, или пустой OptionalLong, если поток пуст.

Это терминальная операция с коротким замыканием.

Поведение этой операции явно недетерминировано: она может выбрать любой элемент потока. Это позволяет добиться максимальной производительности при параллельной обработке; цена этого состоит в том, что несколько вызовов для одного и того же источника могут возвращать разные результаты. (Если требуется стабильный результат, вместо этого используйте findFirst().)

Возвращает:
OptionalLong, содержащий некоторый элемент этого потока, или пустой OptionalLong, если поток пуст
См. также:
  • findFirst()

asDoubleStream

DoubleStream asDoubleStream()
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double.

Это промежуточная операция.

Возвращает:
DoubleStream, состоящий из элементов этого потока, преобразованных в double

boxed

Stream<Long> boxed()
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Long.

Это промежуточная операция.

Возвращает:
Stream, состоящий из элементов этого потока, каждый из которых упакован в Long

builder

static LongStream.Builder builder()
Возвращает построитель для LongStream.
Возвращает:
построитель потока

empty

static LongStream empty()
Возвращает пустой последовательный LongStream.
Возвращает:
пустой последовательный поток

of

static LongStream of(long t)
Возвращает последовательный LongStream, содержащий один элемент.
Параметры:
t — единственный элемент
Возвращает:
одноэлементный последовательный поток

of

static LongStream of(long... values)
Возвращает последовательный упорядоченный поток, элементы которого — указанные значения.
Параметры:
values — элементы нового потока
Возвращает:
новый поток

iterate

static LongStream iterate(long seed, LongUnaryOperator f)
Возвращает бесконечный последовательный упорядоченный LongStream, созданный путём многократного применения функции f к начальному элементу seed, формируя Stream из seed, f(seed), f(f(seed)) и т. д.

Первым элементом (позиция 0) в LongStream будет заданный seed. Для n > 0 элемент в позиции n будет результатом применения функции f к элементу в позиции n - 1.

Действие применения f к одному элементу происходит до действия применения f к последующим элементам. Для любого заданного элемента действие может выполняться в любом потоке по выбору библиотеки.

Параметры:
seed — начальный элемент
f — функция, применяемая к предыдущему элементу для получения нового элемента
Возвращает:
новый последовательный LongStream

iterate

static LongStream iterate(long seed, LongPredicate hasNext, LongUnaryOperator next)
Возвращает последовательный упорядоченный LongStream, созданный путём многократного применения заданной функции next к начальному элементу при условии выполнения заданного предиката hasNext. Поток завершается, как только предикат hasNext возвращает false.

LongStream.iterate должен формировать ту же последовательность элементов, что и соответствующий цикл for:

    for (long index=seed; hasNext.test(index); index = next.applyAsLong(index)) {
        ...
    }

Полученная последовательность может быть пустой, если предикат hasNext не выполняется для начального значения. В противном случае первым элементом будет заданное значение seed, следующим элементом (если он есть) будет результат применения функции next к значению seed и так далее, пока предикат hasNext не укажет, что поток следует завершить.

Действие применения предиката hasNext к элементу происходит до действия применения функции next к этому элементу. Действие применения функции next к одному элементу происходит до действия применения предиката hasNext к последующим элементам. Для любого заданного элемента действие может выполняться в любом потоке по выбору библиотеки.

Параметры:
seed — начальный элемент
hasNext — предикат, применяемый к элементам для определения момента завершения потока.
next — функция, применяемая к предыдущему элементу для получения нового элемента
Возвращает:
новый последовательный LongStream
Начиная с:
9

generate

static LongStream generate(LongSupplier s)
Возвращает бесконечный последовательный неупорядоченный поток, каждый элемент которого создаётся с помощью заданного LongSupplier. Подходит для создания постоянных потоков, потоков случайных элементов и т. д.
Параметры:
s — LongSupplier для создаваемых элементов
Возвращает:
новый бесконечный последовательный неупорядоченный LongStream

range

static LongStream range(long startInclusive, long endExclusive)
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endExclusive (не включая), с шагом 1.
Примечание к API:

Эквивалентную последовательность возрастающих значений можно последовательно получить с помощью цикла for следующим образом:

    for (long i = startInclusive; i < endExclusive ; i++) { ... }
Параметры:
startInclusive — начальное значение (включительно)
endExclusive — исключительная верхняя граница
Возвращает:
последовательный LongStream для диапазона из long элементов

rangeClosed

static LongStream rangeClosed(long startInclusive, long endInclusive)
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endInclusive (включительно), с шагом 1.
Примечание к API:

Эквивалентную последовательность возрастающих значений можно последовательно получить с помощью цикла for следующим образом:

    for (long i = startInclusive; i <= endInclusive ; i++) { ... }
Параметры:
startInclusive — начальное значение (включительно)
endInclusive — верхняя граница (включительно)
Возвращает:
последовательный LongStream для диапазона из long элементов

concat

static LongStream concat(LongStream a, LongStream b)
Создаёт лениво объединённый поток, элементы которого состоят из всех элементов первого потока, за которыми следуют все элементы второго потока. Полученный поток упорядочен, если упорядочены оба входных потока, и параллелен, если параллелен хотя бы один из входных потоков. При закрытии полученного потока вызываются обработчики закрытия обоих входных потоков.

Этот метод работает с двумя входными потоками и связывает каждый поток с его источником. В результате последующие изменения источника входного потока могут не отразиться в результате объединения.

Примечание к API:
Для сохранения возможностей оптимизации этот метод связывает каждый поток с его источником и принимает только два потока в качестве параметров. Например, точный размер источника объединённого потока можно вычислить, если известен точный размер источника каждого входного потока. Чтобы объединить больше потоков без связывания или без вложенных вызовов этого метода, попробуйте создать поток потоков и выполнить его плоское отображение с помощью тождественной функции, например:
    LongStream concat = Stream.of(s1, s2, s3, s4).flatMapToLong(s -> s);
Примечание по реализации:
Будьте осторожны при создании потоков путём многократного объединения. Доступ к элементу глубоко объединённого потока может привести к длинным цепочкам вызовов или даже к StackOverflowError.
Параметры:
a — первый поток
b — второй поток
Возвращает:
объединение двух входных потоков

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API