Интерфейс 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
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
LongStream.Builder |
Изменяемый построитель для LongStream. |
static interface |
LongStream.LongMapMultiConsumer |
Представляет операцию, принимающую аргумент типа long и LongConsumer и не возвращающую результат. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
allMatch |
Возвращает true, если все элементы этого потока удовлетворяют заданному предикату. |
boolean |
anyMatch |
Возвращает true, если хотя бы один элемент этого потока удовлетворяет заданному предикату. |
DoubleStream |
asDoubleStream() |
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double. |
OptionalDouble |
average() |
Возвращает OptionalDouble, содержащий среднее арифметическое элементов этого потока, или пустой optional, если поток пуст. |
Stream |
boxed() |
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Long. |
static LongStream.Builder |
builder() |
Возвращает построитель для LongStream. |
<R> R |
collect |
Выполняет операцию изменяемой редукции над элементами этого потока. |
static LongStream |
concat |
Создает лениво конкатенируемый поток, элементы которого состоят из всех элементов первого потока, за которыми следуют все элементы второго потока. |
long |
count() |
Возвращает количество элементов в этом потоке. |
LongStream |
distinct() |
Возвращает поток, состоящий из уникальных элементов этого потока. |
default LongStream |
dropWhile |
Если этот поток упорядочен, возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания самого длинного начального префикса элементов, удовлетворяющих заданному предикату. |
static LongStream |
empty() |
Возвращает пустой последовательный LongStream. |
LongStream |
filter |
Возвращает поток, состоящий из элементов этого потока, удовлетворяющих заданному предикату. |
OptionalLong |
findAny() |
Возвращает OptionalLong, содержащий некоторый элемент потока, или пустой OptionalLong, если поток пуст. |
OptionalLong |
findFirst() |
Возвращает OptionalLong, содержащий первый элемент этого потока, или пустой OptionalLong, если поток пуст. |
LongStream |
flatMap |
Возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым отображенного потока, созданного путем применения заданной функции отображения к каждому элементу. |
void |
forEach |
Выполняет действие для каждого элемента этого потока. |
void |
forEachOrdered |
Выполняет действие для каждого элемента этого потока, гарантируя обработку элементов в порядке их появления для потоков с определенным порядком появления. |
static LongStream |
generate |
Возвращает бесконечный неупорядоченный последовательный поток, каждый элемент которого генерируется заданным LongSupplier. |
static LongStream |
iterate |
Возвращает упорядоченный последовательный LongStream, созданный путем итеративного применения заданной функции next к начальному элементу при условии, что он удовлетворяет заданному предикату hasNext. |
static LongStream |
iterate |
Возвращает бесконечный упорядоченный последовательный LongStream, созданный путем итеративного применения функции f к начальному элементу seed, в результате чего создается Stream, состоящий из seed, f(seed), f(f(seed)) и т. д. |
LongStream |
limit |
Возвращает поток, состоящий из элементов этого потока, усеченный до длины не более maxSize. |
LongStream |
map |
Возвращает поток, состоящий из результатов применения заданной функции к элементам этого потока. |
default LongStream |
mapMulti |
Возвращает поток, состоящий из результатов замены каждого элемента этого потока несколькими элементами, а именно нулем или более элементами. |
DoubleStream |
mapToDouble |
Возвращает DoubleStream, состоящий из результатов применения заданной функции к элементам этого потока. |
IntStream |
mapToInt |
Возвращает IntStream, состоящий из результатов применения заданной функции к элементам этого потока. |
<U> Stream |
mapToObj |
Возвращает Stream со значениями типа Object, состоящий из результатов применения заданной функции к элементам этого потока. |
OptionalLong |
max() |
Возвращает OptionalLong, содержащий максимальный элемент этого потока, или пустой optional, если поток пуст. |
OptionalLong |
min() |
Возвращает OptionalLong, содержащий минимальный элемент этого потока, или пустой optional, если поток пуст. |
boolean |
noneMatch |
Возвращает true, если ни один элемент этого потока не удовлетворяет заданному предикату. |
static LongStream |
of |
Возвращает последовательный LongStream, содержащий один элемент. |
static LongStream |
of |
Возвращает упорядоченный последовательный поток, элементы которого — заданные значения. |
LongStream |
peek |
Возвращает поток, состоящий из элементов этого потока и дополнительно выполняющий заданное действие над каждым элементом по мере его извлечения из результирующего потока. |
static LongStream |
range |
Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endExclusive (не включая) с шагом 1. |
static LongStream |
rangeClosed |
Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endInclusive (включительно) с шагом 1. |
long |
reduce |
Выполняет редукцию элементов этого потока, используя заданное начальное значение и ассоциативную функцию накопления, и возвращает редуцированное значение. |
OptionalLong |
reduce |
Выполняет редукцию элементов этого потока с использованием ассоциативной функции накопления и возвращает OptionalLong, содержащий редуцированное значение, если оно есть. |
LongStream |
skip |
Возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания первых n элементов. |
LongStream |
sorted() |
Возвращает поток, состоящий из элементов этого потока, упорядоченных по возрастанию. |
long |
sum() |
Возвращает сумму элементов этого потока. |
LongSummaryStatistics |
summaryStatistics() |
Возвращает LongSummaryStatistics, содержащий сводные данные об элементах этого потока. |
default LongStream |
takeWhile |
Если этот поток упорядочен, возвращает поток, состоящий из самого длинного начального префикса его элементов, удовлетворяющих заданному предикату. |
long[] |
toArray() |
Возвращает массив, содержащий элементы этого потока. |
Методы, объявленные в интерфейсе BaseStream
close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот поток, вызывая все обработчики закрытия конвейера этого потока. |
boolean |
isParallel() |
Возвращает true, если при выполнении терминальной операции этот поток будет обрабатываться параллельно. |
Iterator |
iterator() |
Возвращает итератор элементов этого потока. |
LongStream |
onClose |
Возвращает эквивалентный поток с дополнительным обработчиком закрытия. |
LongStream |
parallel() |
Возвращает эквивалентный параллельный поток. |
LongStream |
sequential() |
Возвращает эквивалентный последовательный поток. |
Spliterator |
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новых значений - Возвращает:
- новый поток
- См. также:
mapMulti
default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper)
Если аргумент потребителя используется за пределами области применения функции отображения, результаты не определены.
- Требования к реализации:
- Реализация по умолчанию вызывает
flatMapдля этого потока, передавая функцию со следующим поведением. Сначала она вызывает функцию отображения, передавая ейLongConsumer, который накапливает элементы-замены во вновь созданном внутреннем буфере. После возврата функции отображения она создаётLongStreamиз внутреннего буфера. Наконец, она возвращает этот поток вflatMap. - Параметры:
-
mapper— функция, которая должна быть не мешающей и без сохранения состояния и создаёт элементы-замены - Возвращает:
- новый поток
- Начиная с версии:
- 16
- См. также:
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— не мешающее действие, выполняемое над элементами - См. также:
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— ассоциативная, не мешающая, не сохраняющая состояние функция для объединения двух значений - Возвращает:
- результат сведения
- См. также:
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— ассоциативная, не мешающая, не сохраняющая состояние функция для объединения двух значений - Возвращает:
- результат сведения
- См. также:
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— ассоциативная, не мешающая, не сохраняющая состояние функция, принимающая два частичных контейнера результата и объединяющая их; она должна быть совместима с функцией-аккумулятором. Функция-комбайнер должна добавлять элементы из второго контейнера результата в первый. - Возвращает:
- результат сведения
- См. также:
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, если поток пуст- См. также:
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.