Spec-Zone.ru › OpenJDK 25

Интерфейс 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)
Возвращает значение, указывающее, соответствуют ли все элементы этого потока заданному предикату.
boolean anyMatch(LongPredicate predicate)
Возвращает значение, указывающее, соответствуют ли какие-либо элементы этого потока заданному предикату.
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 объектных значений, состоящий из результатов применения заданной функции к элементам этого потока.
OptionalLong max()
Возвращает OptionalLong, описывающий максимальный элемент этого потока, или пустой optional, если поток пуст.
OptionalLong min()
Возвращает OptionalLong, описывающий минимальный элемент этого потока, или пустой optional, если поток пуст.
boolean noneMatch(LongPredicate predicate)
Возвращает значение, указывающее, что ни один элемент этого потока не соответствует заданному предикату.
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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/stream/LongStream.html

Spec-Zone.ru

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