Spec-Zone.ru › OpenJDK 24

Интерфейс LongStream

Все суперинтерфейсы:
AutoCloseable, BaseStream<Long, LongStream>
public interface LongStream extends BaseStream<Long, LongStream>
Последовательность примитивных элементов типа 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, описывающий среднее арифметическое элементов этого потока, или пустой необязательный объект, если этот поток пуст.
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, описывающий максимальный элемент этого потока, или пустой необязательный объект, если этот поток пуст.
OptionalLong min()
Возвращает OptionalLong, описывающий минимальный элемент этого потока, или пустой необязательный объект, если этот поток пуст.
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()
Возвращает массив, содержащий элементы этого потока.

Методы, объявленные в интерфейсе java.util.stream.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)
Возвращает поток целых чисел, полученный при применении заданной функции к элементам этого потока.

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

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

mapToDouble

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

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

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

flatMap

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

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

Параметры:
mapper - функция, применяемая к каждому элементу, которая производит поток новых значений
Возвращает:
новый поток
См. также:
  • 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, описывающий минимальный элемент этого потока, или пустой объект OptionalLong, если этот поток пустой. Это частный случай редукции и эквивалентно:

     return reduce(Long::min);
 

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

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

max

OptionalLong max()
Возвращает объект OptionalLong, описывающий максимальный элемент этого потока, или пустой объект OptionalLong, если этот поток пустой. Это частный случай редукции и эквивалентно:

     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, описывающий среднее арифметическое элементов этого потока, или пустой объект OptionalDouble, если этот поток пустой. Это частный случай редукции.

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

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

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 - второй поток
Возвращает:
конкатенацию двух входных потоков

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/stream/LongStream.html

Spec-Zone.ru

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