Интерфейс DoubleStream
- Все суперинтерфейсы:
-
AutoCloseable,BaseStream<Double, DoubleStream>
public interface DoubleStream extends BaseStream<Double, DoubleStream>
Stream. Следующий пример демонстрирует агрегированную операцию с использованием Stream и DoubleStream, вычисляя сумму весов красных виджетов:
double sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToDouble(w -> w.getWeight())
.sum();
Смотрите документацию класса Stream и документацию пакета java.util.stream для дополнительной информации о потоках, операциях над потоками, конвейерах потоков и параллелизме.- С:
- 1.8
- См. также:
Краткое описание вложенных классов
| Modifier and Type | Interface | Description |
|---|---|---|
static interface |
DoubleStream.Builder |
Изменяемый билдер для DoubleStream. |
static interface |
DoubleStream.DoubleMapMultiConsumer |
Представляет операцию, принимающую аргумент типа double и DoubleConsumer, и не возвращающую результата. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
boolean |
allMatch |
Возвращает значение true, если все элементы потока удовлетворяют предоставленному предикату. |
boolean |
anyMatch |
Возвращает значение true, если хотя бы один элемент потока удовлетворяет предоставленному предикату. |
OptionalDouble |
average() |
Возвращает OptionalDouble, описывающую среднее арифметическое элементов потока, или пустой необязательный объект, если поток пуст. |
Stream |
boxed() |
Возвращает Stream, состоящий из элементов потока, преобразованных к типу Double. |
static DoubleStream.Builder |
builder() |
Возвращает билдер для DoubleStream. |
<R> R |
collect |
Выполняет операцию изменяемого сворачивания над элементами потока. |
static DoubleStream |
concat |
Создает лениво конкатенированный поток, элементы которого представляют собой все элементы первого потока, за которыми следуют все элементы второго потока. |
long |
count() |
Возвращает количество элементов в этом потоке. |
DoubleStream |
distinct() |
Возвращает поток, состоящий из уникальных элементов этого потока. |
default DoubleStream |
dropWhile |
Если поток упорядочен, возвращает поток, состоящий из оставшихся элементов потока после отбрасывания самого длинного префикса элементов, удовлетворяющих заданному предикату. |
static DoubleStream |
empty() |
Возвращает пустой последовательный DoubleStream. |
DoubleStream |
filter |
Возвращает поток, состоящий из элементов этого потока, которые удовлетворяют заданному предикату. |
OptionalDouble |
findAny() |
Возвращает OptionalDouble, описывающий некоторый элемент потока, или пустой OptionalDouble, если поток пуст. |
OptionalDouble |
findFirst() |
Возвращает OptionalDouble, описывающий первый элемент этого потока, или пустой OptionalDouble, если поток пуст. |
DoubleStream |
flatMap |
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым отображенного потока, полученного путём применения предоставленной функции отображения к каждому элементу. |
void |
forEach |
Выполняет действие для каждого элемента этого потока. |
void |
forEachOrdered |
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, для которых определен порядок встречи. |
static DoubleStream |
generate |
Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной DoubleSupplier. |
static DoubleStream |
iterate |
Возвращает последовательный упорядоченный DoubleStream, полученный итеративным применением заданной next функции к начальному элементу, с условием удовлетворения заданному hasNext предикату. |
static DoubleStream |
iterate |
Возвращает бесконечный последовательный упорядоченный DoubleStream, полученный итеративным применением функции f к начальному элементу seed, генерирующий Stream, состоящий из seed, f(seed), f(f(seed)) и т. д. |
DoubleStream |
limit |
Возвращает поток, содержащий элементы этого потока, усечённые до длины не более maxSize. |
DoubleStream |
map |
Возвращает поток, содержащий результаты применения заданной функции к элементам этого потока. |
default DoubleStream |
mapMulti |
Возвращает поток, содержащий результаты замены каждого элемента этого потока на множество элементов, а именно нуль или более элементов. |
IntStream |
mapToInt |
Возвращает IntStream, содержащий результаты применения заданной функции к элементам этого потока. |
LongStream |
mapToLong |
Возвращает LongStream, содержащий результаты применения заданной функции к элементам этого потока. |
<U> Stream |
mapToObj |
Возвращает Stream объектного типа, содержащий результаты применения заданной функции к элементам этого потока. |
OptionalDouble |
max() |
Возвращает OptionalDouble, описывающий максимальный элемент этого потока, или пустой OptionalDouble, если поток пуст. |
OptionalDouble |
min() |
Возвращает OptionalDouble, описывающий минимальный элемент этого потока, или пустой OptionalDouble, если поток пуст. |
boolean |
noneMatch |
Возвращает значение true, если ни один элемент этого потока не удовлетворяет заданному предикату. |
static DoubleStream |
of |
Возвращает последовательный DoubleStream, содержащий один элемент. |
static DoubleStream |
of |
Возвращает последовательный упорядоченный поток, элементы которого представляют собой указанные значения. |
DoubleStream |
peek |
Возвращает поток, содержащий элементы этого потока, дополнительно выполняя предоставленное действие над каждым элементом при потреблении элементов из результирующего потока. |
double |
reduce |
Выполняет операцию сворачивания над элементами этого потока, используя предоставленное значение тождества и ассоциативную функцию накопления, и возвращает значение, полученное в результате сворачивания. |
OptionalDouble |
reduce |
Выполняет операцию сворачивания над элементами этого потока, используя ассоциативную функцию накопления, и возвращает OptionalDouble, описывающую значение, полученное в результате сворачивания, если оно существует. |
DoubleStream |
skip |
Возвращает поток, содержащий оставшиеся элементы этого потока после отбрасывания первых n элементов потока. |
DoubleStream |
sorted() |
Возвращает поток, содержащий элементы этого потока в отсортированном порядке. |
double |
sum() |
Возвращает сумму элементов в этом потоке. |
DoubleSummaryStatistics |
summaryStatistics() |
Возвращает DoubleSummaryStatistics, описывающий различные сводные данные об элементах этого потока. |
default DoubleStream |
takeWhile |
Если этот поток упорядочен, возвращает поток, содержащий самый длинный префикс элементов, взятых из этого потока, которые удовлетворяют заданному предикату. |
double[] |
toArray() |
Возвращает массив, содержащий элементы этого потока. |
Методы, объявленные в интерфейсе java.util.stream.BaseStream
close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered
Подробное описание методов
filter
DoubleStream filter(DoublePredicate predicate)
- Параметры:
-
predicate- не влияющий и бессостоятельный предикат, который применяется к каждому элементу для определения, должен ли он быть включён - Возвращает:
- новый поток
map
DoubleStream map(DoubleUnaryOperator mapper)
- Параметры:
-
mapper- не влияющая, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToObj
<U> Stream<U> mapToObj(DoubleFunction<? extends U> mapper)
Stream, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры типа:
U- тип элемента нового потока- Параметры:
-
mapper- не влияющая, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToInt
IntStream mapToInt(DoubleToIntFunction mapper)
IntStream, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- не влияющая, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToLong
LongStream mapToLong(DoubleToLongFunction mapper)
LongStream, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- не влияющая, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
flatMap
DoubleStream flatMap(DoubleFunction<? extends DoubleStream> mapper)
closed после того, как его содержимое было помещено в этот поток. (Если отображённый поток null, вместо него используется пустой поток.)
- Параметры:
-
mapper- не влияющая, бессостоятельная функция, применяемая к каждому элементу, которая производит поток новых значений - Возвращает:
- новый поток
- См. также:
mapMulti
default DoubleStream mapMulti(DoubleStream.DoubleMapMultiConsumer mapper)
Если аргумент потребителя используется за пределами области его применения к функции отображения, результаты будут неопределёнными.
- Требования к реализации:
- Стандартная реализация вызывает
flatMapдля этого потока, передавая функцию, которая работает следующим образом. Во-первых, она вызывает функцию-маппер сDoubleConsumer, которая накапливает элементы замены в вновь созданном внутреннем буфере. После того, как функция-маппер возвращается, она создаётDoubleStreamиз внутреннего буфера. Наконец, она возвращает этот поток дляflatMap. - Параметры:
-
mapper- не влияющая, бессостоятельная функция, генерирующая элементы замены - Возвращает:
- новый поток
- С:
- 16
- См. также:
distinct
DoubleStream distinct()
Double.compare(double, double).
- Возвращает:
- результат потока
sorted
DoubleStream sorted()
Double.compare(double, double).
- Возвращает:
- результат потока
peek
DoubleStream peek(DoubleConsumer action)
Для параллельных потоков действие может быть вызвано в любое время и в любом потоке, где элемент становится доступным от предыдущей операции. Если действие изменяет общие данные, оно отвечает за обеспечение необходимой синхронизации.
- Примечание API:
- Этот метод существует в основном для отладки, где вы хотите увидеть элементы по мере их прохождения через определённую точку в конвейере:
DoubleStream.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
DoubleStream limit(long maxSize)
maxSize.
- Примечание API:
- Хотя
limit()обычно является дешёвой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийmaxSize, так какlimit(n)ограничено возвращением не любых n элементов, а первых n элементов в порядке встречи. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядочивания с помощьюBaseStream.unordered()может привести к значительному ускорениюlimit()в параллельных конвейерах, если семантика вашей ситуации это позволяет. Если требуются согласованность с порядком встречи и вы сталкиваетесь с низкой производительностью или использованием памяти сlimit()в параллельных конвейерах, переход к последовательному выполнению сBaseStream.sequential()может улучшить производительность. - Параметры:
-
maxSize- количество элементов, до которого должен быть ограничен поток - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиmaxSizeотрицательно
skip
DoubleStream skip(long n)
n элементов потока. Если этот поток содержит меньше n элементов, то будет возвращён пустой поток.
- Примечание API:
- Хотя
skip()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийn, так какskip(n)ограничена не только пропуском любых n элементов, но и пропуском первых n элементов в порядке встреч. Использование неупорядоченного источника потока (например,generate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюskip()в параллельных конвейерах, если это разрешено семантикой вашей ситуации. Если требуется соблюдение порядка встречи, а у вас наблюдается плохая производительность или использование памяти при использованииskip()в параллельных конвейерах, переключение на последовательное выполнение с помощьюBaseStream.sequential()может улучшить производительность. - Параметры:
-
n- количество ведущих элементов для пропуска - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиnотрицательно
takeWhile
default DoubleStream takeWhile(DoublePredicate predicate)
Если этот поток упорядочен, то самый длинный префикс представляет собой непрерывную последовательность элементов этого потока, которые соответствуют заданному предикату. Первый элемент последовательности — это первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.
Если этот поток неупорядочен, и некоторые (но не все) элементы этого потока соответствуют заданному предикату, то поведение этой операции не определено; она может взять любое подмножество соответствующих элементов (включая пустое множество).
Независимо от того, упорядочен ли этот поток или нет, если все элементы этого потока соответствуют заданному предикату, то эта операция берет все элементы (результат такой же, как входной), или если ни один элемент потока не соответствует заданному предикату, то не берутся никакие элементы (результат — пустой поток).
Это краткозамкнутая состояниезависимая промежуточная операция.
- Примечание API:
- Хотя
takeWhile()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, поскольку операция ограничена возвращением не просто любого допустимого префикса, но самого длинного префикса элементов в порядке встречи. Использование неупорядоченного источника потока (например,generate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюtakeWhile()в параллельных конвейерах, если это разрешено семантикой вашей ситуации. Если требуется соблюдение порядка встречи, а у вас наблюдается плохая производительность или использование памяти при использованииtakeWhile()в параллельных конвейерах, переключение на последовательное выполнение с помощьюBaseStream.sequential()может улучшить производительность. - Требования к реализации:
- По умолчанию реализация получает
spliteratorэтого потока, оборачивает этот разделитель для поддержки семантики этой операции при проходе и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (именно параллельное или последовательное выполнение в соответствии сBaseStream.isParallel()), но обернутый разделитель может отказаться от поддержки разделения. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока. - Параметры:
-
predicate- невмешательство, бессостояние предикат для применения к элементам для определения самого длинного префикса элементов. - Возвращает:
- новый поток
- С:
- 9
dropWhile
default DoubleStream dropWhile(DoublePredicate predicate)
Если этот поток упорядочен, то самый длинный префикс представляет собой непрерывную последовательность элементов этого потока, которые соответствуют заданному предикату. Первый элемент последовательности — это первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.
Если этот поток неупорядочен, и некоторые (но не все) элементы этого потока соответствуют заданному предикату, то поведение этой операции не определено; она может пропустить любое подмножество соответствующих элементов (включая пустое множество).
Независимо от того, упорядочен ли этот поток или нет, если все элементы этого потока соответствуют заданному предикату, то эта операция пропускает все элементы (результат — пустой поток), или если ни один элемент потока не соответствует заданному предикату, то не пропускаются никакие элементы (результат — такой же, как входной).
- Примечание API:
- Хотя
dropWhile()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, поскольку операция ограничена возвращением не просто любого допустимого префикса, но самого длинного префикса элементов в порядке встречи. Использование неупорядоченного источника потока (например,generate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюdropWhile()в параллельных конвейерах, если это разрешено семантикой вашей ситуации. Если требуется соблюдение порядка встречи, а у вас наблюдается плохая производительность или использование памяти при использованииdropWhile()в параллельных конвейерах, переключение на последовательное выполнение с помощьюBaseStream.sequential()может улучшить производительность. - Требования к реализации:
- По умолчанию реализация получает
spliteratorэтого потока, оборачивает этот разделитель для поддержки семантики этой операции при проходе и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (именно параллельное или последовательное выполнение в соответствии сBaseStream.isParallel()), но обернутый разделитель может отказаться от поддержки разделения. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока. - Параметры:
-
predicate- не вмешивающийся, бессостояние предикат для применения к элементам для определения самого длинного префикса элементов. - Возвращает:
- новый поток
- С:
- 9
forEach
void forEach(DoubleConsumer action)
Это конечная операция.
Для параллельных потоковых конвейеров эта операция не гарантирует соблюдение порядка встречи потока, поскольку это бы потребовало жертвы преимущества параллелизма. Для каждого элемента действие может быть выполнено в любое время и в любом потоке, выбранном библиотекой. Если действие обращается к разделяемому состоянию, оно отвечает за предоставление необходимой синхронизации.
- Параметры:
-
action- не вмешивающийся действие, выполняемое над элементами
forEachOrdered
void forEachOrdered(DoubleConsumer action)
Это конечная операция.
- Параметры:
-
action- не вмешивающийся действие, выполняемое над элементами - См. также:
toArray
double[] toArray()
Это конечная операция.
- Возвращает:
- массив, содержащий элементы этого потока
reduce
double reduce(double identity, DoubleBinaryOperator op)
double result = identity;
for (double element : this stream)
result = accumulator.applyAsDouble(result, element)
return result;
но не ограничено последовательным выполнением.
Значение identity должно быть тождественным для функции накопления. Это означает, что для всех x, accumulator.apply(identity, x) равно x. Функция accumulator должна быть ассоциативной функцией.
Это конечная операция.
- Примечание API:
- Суммирование, минимум, максимум и среднее значение являются частными случаями редукции. Суммирование потока чисел может быть выражено как:
или более компактно:double sum = numbers.reduce(0, (a, b) -> a+b);double sum = numbers.reduce(0, Double::sum);Хотя это может показаться более окольным способом выполнения агрегации по сравнению с простым изменением текущей суммы в цикле, операции редукции более эффективно параллелизуются без необходимости дополнительной синхронизации и с значительно меньшим риском гонок данных.
- Параметры:
-
identity- идентификационное значение для функции накопления -
op- ассоциативная, не нарушающая, бессостоятельная функция для объединения двух значений - Возвращает:
- результат редукции
- См. также:
reduce
OptionalDouble reduce(DoubleBinaryOperator op)
boolean foundAny = false;
double result = null;
for (double element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsDouble(result, element);
}
return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
но не ограничено последовательным выполнением.
Функция accumulator должна быть ассоциативной функцией.
Это конечная операция.
- Параметры:
-
op- ассоциативная, не нарушающая, бессостоятельная функция для объединения двух значений - Возвращает:
- результат редукции
- См. также:
collect
<R> R collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
ArrayList, и элементы включаются путём обновления состояния результата, а не путём его замены. Это даёт результат, эквивалентный:
R result = supplier.get();
for (double element : this stream)
accumulator.accept(result, element);
return result;
Как и reduce(double, DoubleBinaryOperator), операции collect могут быть распараллелены без необходимости дополнительной синхронизации.
Это конечная операция.
- Параметры типов:
R- тип изменяемого контейнера результата- Параметры:
-
supplier- функция, создающая новый изменяемый контейнер результата. При параллельном выполнении эта функция может вызываться несколько раз и должна возвращать новое значение каждый раз. -
accumulator- ассоциативная, не нарушающая, бессостоятельная функция, которая должна складывать элемент в контейнер результата. -
combiner- ассоциативная, не нарушающая, бессостоятельная функция, которая принимает два частичных контейнера результата и объединяет их, которая должна быть совместима с функцией накопления. Функция объединения должна складывать элементы из второго контейнера результата в первый контейнер результата. - Возвращает:
- результат редукции
- См. также:
sum
double sum()
return reduce(0, Double::sum);
Однако, поскольку суммирование с плавающей точкой неточно, вышеприведённый код не обязательно эквивалентен вычислению суммы, выполняемому этим методом.
Значение суммы с плавающей точкой зависит как от входных значений, так и от порядка операций сложения. Порядок операций сложения в этом методе намеренно не определён, чтобы позволить гибкость реализации для повышения скорости и точности вычисляемого результата. В частности, этот метод может быть реализован с использованием компенсированного суммирования или другого метода для уменьшения погрешности в численной сумме по сравнению с простым суммированием double значений. Из-за неопределённого порядка операций и возможности использования различных схем суммирования вывод этого метода может различаться для одних и тех же входных элементов.
Различные условия могут привести к вычислению бесконечной суммы. Это может произойти, даже если все суммируемые элементы конечны. Если какой-либо элемент не конечен, сумма также будет не конечной:
- Если какой-либо элемент — NaN, то итоговая сумма будет NaN.
- Если элементы содержат одну или несколько бесконечностей, сумма будет бесконечной или NaN.
- Если элементы содержат бесконечности противоположных знаков, сумма будет NaN.
- Если элементы содержат бесконечности одного знака, а промежуточная сумма переполняется в бесконечность противоположного знака, сумма может быть NaN.
Это конечная операция.
- Примечание API:
- Элементы, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты.
- Возвращает:
- сумма элементов в этом потоке
min
OptionalDouble min()
Double.NaN, если какой-либо элемент потока был NaN. В отличие от численных операторов сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Это частный случай редукции и эквивалентно:
return reduce(Double::min);
Это конечная операция.
- Возвращает:
- OptionalDouble, содержащий минимальный элемент этого потока, или пустой Optional, если поток пустой
max
OptionalDouble max()
Double.NaN, если какой-либо элемент потока был NaN. В отличие от численных операторов сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Это частный случай редукции и эквивалентно:
return reduce(Double::max);
Это конечная операция.
- Возвращает:
- OptionalDouble, содержащий максимальный элемент этого потока, или пустой Optional, если поток пустой
count
long count()
return mapToLong(e -> 1L).sum();
Это конечная операция.
- Примечание API:
- Реализация может выбрать не выполнять обработку потока (ни последовательно, ни параллельно), если она способна вычислить количество напрямую из источника потока. В таких случаях элементы источника не будут обрабатываться, а промежуточные операции не будут оцениваться. Параметры поведения со побочными эффектами, которые категорически не рекомендуется использовать, за исключением безвредных случаев, таких как отладка, могут быть затронуты. Рассмотрим, например, следующий поток:
Количество элементов, охватываемых источником потока, известно, и промежуточная операцияDoubleStream s = DoubleStream.of(1, 2, 3, 4); long count = s.peek(System.out::println).count();peekне вводит и не удаляет элементы из потока (в отличие от операцийflatMapилиfilter). Таким образом, счётчик равен 4, и нет необходимости выполнять обработку потока и, как побочный эффект, выводить элементы. - Возвращает:
- количество элементов в этом потоке
среднее значение
OptionalDouble average()
OptionalDouble, описывающую среднее арифметическое элементов этого потока, или пустой необязательный объект, если этот поток пустой. Вычисленное среднее значение может изменяться численно и иметь особый случай поведения, как при вычислении суммы; см. sum() для получения подробностей.
Среднее значение является частным случаем редукции.
Это конечная операция.
- Примечание API:
- Элементы, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты.
- Возвращает:
OptionalDouble, содержащий среднее значение элемента этого потока, или пустой необязательный объект, если поток пустой
статистические данные
DoubleSummaryStatistics summaryStatistics()
DoubleSummaryStatistics, описывающую различные сводные данные об элементах этого потока. Это частный случай редукции. Это конечная операция.
- Возвращает:
DoubleSummaryStatistics, описывающую различные сводные данные об элементах этого потока
anyMatch
boolean anyMatch(DoublePredicate predicate)
false, и предикат не вычисляется.
- Примечание API:
- Этот метод вычисляет существование квантификации предиката над элементами потока (для некоторого x P(x)).
- Параметры:
-
predicate- невмешивающийся, бессостоятельный предикат для применения к элементам этого потока - Возвращает:
-
true, если какие-либо элементы потока соответствуют заданному предикату, в противном случаеfalse
allMatch
boolean allMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- Примечание API:
- Этот метод вычисляет универсальную квантификацию предиката над элементами потока (для всех x P(x)). Если поток пустой, то квантификация считается пустой и всегда
true(независимо от P(x)). - Параметры:
-
predicate- невмешивающийся, бессостоятельный предикат для применения к элементам этого потока - Возвращает:
-
true, если все элементы потока соответствуют заданному предикату или поток пустой, в противном случаеfalse
noneMatch
boolean noneMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- Примечание API:
- Этот метод вычисляет универсальную квантификацию отрицаемого предиката над элементами потока (для всех x ~P(x)). Если поток пустой, то квантификация считается пустой и всегда
true, независимо от P(x). - Параметры:
-
predicate- невмешивающийся, бессостоятельный предикат для применения к элементам этого потока - Возвращает:
-
true, если ни один элемент потока не соответствует заданному предикату или поток пустой, в противном случаеfalse
findFirst
OptionalDouble findFirst()
OptionalDouble, описывающую первый элемент этого потока, или пустой OptionalDouble, если поток пустой. Если поток не имеет порядка встреч, то может быть возвращен любой элемент.
- Возвращает:
OptionalDouble, описывающий первый элемент этого потока, или пустойOptionalDouble, если поток пустой
findAny
OptionalDouble findAny()
OptionalDouble, описывающий некоторый элемент потока, или пустой OptionalDouble, если поток пустой. Это конечная операция с короткой цепочкой.
Поведение этой операции явно недетерминировано; она свободна выбирать любой элемент в потоке. Это позволяет обеспечить максимальную производительность в параллельных операциях; цена состоит в том, что несколько вызовов одного и того же источника могут не возвращать одинаковый результат. (Если требуется стабильный результат, используйте findFirst() вместо этого.)
- Возвращает:
OptionalDouble, описывающий некоторый элемент этого потока, или пустойOptionalDouble, если поток пустой- См. также:
boxed
Stream<Double> boxed()
Stream, состоящий из элементов этого потока, упакованных в Double.
- Возвращает:
Stream, состоящий из элементов этого потока, каждый из которых упакован вDouble
builder
static DoubleStream.Builder builder()
DoubleStream.- Возвращает:
- билдер потока
empty
static DoubleStream empty()
DoubleStream.- Возвращает:
- пустой последовательный поток
of
static DoubleStream of(double t)
DoubleStream, содержащий один элемент.- Параметры:
-
t- единственный элемент - Возвращает:
- последовательный поток с одним элементом
of
static DoubleStream of(double... values)
- Параметры:
-
values- элементы нового потока - Возвращает:
- новый поток
iterate
static DoubleStream iterate(double seed, DoubleUnaryOperator f)
DoubleStream, созданный итеративным применением функции f к начальному элементу seed, создавая Stream, состоящий из seed, f(seed), f(f(seed)) и т. д. Первый элемент (позиция 0) в DoubleStream будет заданным seed. Для n > 0, элемент на позиции n, будет результатом применения функции f к элементу на позиции n - 1.
Действие применения f для одного элемента происходит до действия применения f для последующих элементов. Для любого данного элемента действие может выполняться в любом потоке, выбранном библиотекой.
- Параметры:
-
seed- начальный элемент -
f- функция, которая применяется к предыдущему элементу для получения нового элемента - Возвращает:
- новый последовательный
DoubleStream
iterate
static DoubleStream iterate(double seed, DoublePredicate hasNext, DoubleUnaryOperator next)
DoubleStream, полученную путём итеративного применения заданной next функции к начальному элементу, при условии выполнения заданного hasNext предиката. Поток завершается, как только hasNext предикат возвращает false. DoubleStream.iterate должна генерировать ту же последовательность элементов, что и соответствующий цикл for:
for (double index=seed; hasNext.test(index); index = next.applyAsDouble(index)) {
...
}
Полученная последовательность может быть пустой, если hasNext предикат не выполняется для начального значения. В противном случае, первым элементом будет предоставленное seed значение, следующим (если есть) - результат применения next функции к предыдущему значению, и так далее итеративно, пока hasNext предикат не укажет на завершение потока.
Действие применения hasNext предиката к элементу происходит до действия применения next функции к этому элементу. Действие применения next функции к одному элементу происходит до действия применения hasNext предиката к последующим элементам. Для каждого элемента действие может выполняться в любой потоке, выбранном библиотекой.
- Parameters:
-
seed- начальный элемент -
hasNext- предикат, применяемый к элементам для определения момента завершения потока. -
next- функция, применяемая к предыдущему элементу для получения нового элемента - Returns:
- новый последовательный
DoubleStream - Since:
- 9
generate
static DoubleStream generate(DoubleSupplier s)
DoubleSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т. д.- Parameters:
-
s-DoubleSupplierдля генерируемых элементов - Returns:
- новый бесконечный последовательный неупорядоченный
DoubleStream
concat
static DoubleStream concat(DoubleStream a, DoubleStream b)
Этот метод работает с двумя входными потоками и связывает каждый поток с его источником. В результате последующие изменения источника входного потока могут не отражаться в результирующем конкатенированном потоке.
- API Note:
- Для сохранения возможностей оптимизации этот метод связывает каждый поток с его источником и принимает только два потока в качестве параметров. Например, точный размер источника конкатенированного потока может быть вычислен, если точный размер источника каждого входного потока известен. Для конкатенации более потоков без связывания или без вложенных вызовов этого метода, попробуйте создать поток потоков и выполнить плоское отображение с помощью функции идентичности, например:
DoubleStream concat = Stream.of(s1, s2, s3, s4).flatMapToDouble(s -> s); - Implementation Note:
- Будьте осторожны при построении потоков из повторной конкатенации. Доступ к элементу глубоко конкатенированного потока может привести к глубоким цепочкам вызовов или даже
StackOverflowError. - Parameters:
-
a- первый поток -
b- второй поток - Returns:
- конкатенация двух входных потоков
© 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/DoubleStream.html