Интерфейс 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 |
Возвращает значение, указывающее, соответствуют ли все элементы этого потока заданному предикату. |
boolean |
anyMatch |
Возвращает значение, указывающее, соответствуют ли какие-либо элементы этого потока заданному предикату. |
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 объектных значений, состоящий из результатов применения заданной функции к элементам этого потока. |
OptionalLong |
max() |
Возвращает OptionalLong, описывающий максимальный элемент этого потока, или пустой optional, если поток пуст. |
OptionalLong |
min() |
Возвращает OptionalLong, описывающий минимальный элемент этого потока, или пустой optional, если поток пуст. |
boolean |
noneMatch |
Возвращает значение, указывающее, что ни один элемент этого потока не соответствует заданному предикату. |
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
Подробное описание методов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/stream/LongStream.html