Интерфейс DoubleStream
- Все суперинтерфейсы:
- AutoCloseable, BaseStream<Double,DoubleStream>
public interface DoubleStream extends BaseStream<Double,DoubleStream>
Последовательность примитивных элементов с двойной точностью, поддерживающая последовательные и параллельные агрегатные операции. Это примитивное специализированное double от Stream.
Следующий пример демонстрирует агрегатную операцию с использованием Stream и DoubleStream, вычисляющей сумму весов красных виджетов:
double sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToDouble(w -> w.getWeight())
.sum(); См. документацию класса для Stream и документацию пакета для java.util.stream для дополнительной спецификации потоков, операций над потоками, конвейеров потоков и параллелизма.- С момента:
- 1.8
- См. также:
-
Stream, java.util.stream
Вложенные классы
| Модификатор и тип | Интерфейс и описание |
|---|---|
static interface |
DoubleStream.Builder Изменяемый билдер для |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
allMatch(DoublePredicate predicate) Возвращает, соответствуют ли все элементы данного потока заданному предикату. |
boolean |
anyMatch(DoublePredicate predicate) Возвращает, соответствует ли какой-либо элемент данного потока заданному предикату. |
OptionalDouble |
average() Возвращает |
Stream<Double> |
boxed() Возвращает |
static DoubleStream.Builder |
builder() Возвращает билдер для |
<R> R |
collect(Supplier<R> supplier,
ObjDoubleConsumer<R> accumulator,
BiConsumer<R,R> combiner) Выполняет операцию мутабельного сворачивания над элементами данного потока. |
static DoubleStream |
concat(DoubleStream a,
DoubleStream b) Создаёт лениво конкатенированный поток, элементы которого — все элементы первого потока, за которыми следуют все элементы второго потока. |
long |
count() Возвращает количество элементов в данном потоке. |
DoubleStream |
distinct() Возвращает поток, содержащий только уникальные элементы данного потока. |
static DoubleStream |
empty() Возвращает пустой последовательный |
DoubleStream |
filter(DoublePredicate predicate) Возвращает поток, содержащий элементы данного потока, соответствующие заданному предикату. |
OptionalDouble |
findAny() Возвращает |
OptionalDouble |
findFirst() Возвращает |
DoubleStream |
flatMap(DoubleFunction<? extends DoubleStream> mapper) Возвращает поток, содержащий результаты замены каждого элемента данного потока содержимым сопоставленного потока, полученного путём применения заданной функции сопоставления к каждому элементу. |
void |
forEach(DoubleConsumer action) Выполняет действие для каждого элемента данного потока. |
void |
forEachOrdered(DoubleConsumer action) Выполняет действие для каждого элемента данного потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, имеющих определённый порядок встречи. |
static DoubleStream |
generate(DoubleSupplier s) Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной |
static DoubleStream |
iterate(double seed,
DoubleUnaryOperator f) Возвращает бесконечный последовательный упорядоченный |
PrimitiveIterator.OfDouble |
iterator() Возвращает итератор для элементов данного потока. |
DoubleStream |
limit(long maxSize) Возвращает поток, состоящий из элементов данного потока, усечённого до длины не более |
DoubleStream |
map(DoubleUnaryOperator mapper) Возвращает поток, содержащий результаты применения данной функции к элементам данного потока. |
IntStream |
mapToInt(DoubleToIntFunction mapper) Возвращает |
LongStream |
mapToLong(DoubleToLongFunction mapper) Возвращает |
<U> Stream<U> |
mapToObj(DoubleFunction<? extends U> mapper) Возвращает поток с объектами |
OptionalDouble |
max() Возвращает |
OptionalDouble |
min() Возвращает |
boolean |
noneMatch(DoublePredicate predicate) Возвращает значение, истинное, если ни один элемент данного потока не соответствует заданному предикату. |
static DoubleStream |
of(double... values) Возвращает последовательный упорядоченный поток, содержащий указанные значения. |
static DoubleStream |
of(double t) Возвращает последовательный |
DoubleStream |
parallel() Возвращает эквивалентный поток, который является параллельным. |
DoubleStream |
peek(DoubleConsumer action) Возвращает поток, содержащий элементы данного потока, дополнительно выполняя предоставленное действие над каждым элементом по мере потребления элементов из результирующего потока. |
OptionalDouble |
reduce(DoubleBinaryOperator op) Выполняет операцию сворачивания над элементами данного потока, используя ассоциативную функцию накопления, и возвращает |
double |
reduce(double identity,
DoubleBinaryOperator op) Выполняет операцию сворачивания над элементами данного потока, используя предоставленное значение идентичности и ассоциативную функцию накопления, и возвращает значение сворачивания. |
DoubleStream |
sequential() Возвращает эквивалентный поток, который является последовательным. |
DoubleStream |
skip(long n) Возвращает поток, состоящий из оставшихся элементов данного потока после отбрасывания первых |
DoubleStream |
sorted() Возвращает поток, содержащий элементы данного потока в отсортированном порядке. |
Spliterator.OfDouble |
spliterator() Возвращает разделитель для элементов данного потока. |
double |
sum() Возвращает сумму элементов в данном потоке. |
DoubleSummaryStatistics |
summaryStatistics() Возвращает |
double[] |
toArray() Возвращает массив, содержащий элементы данного потока. |
Методы, унаследованные от интерфейса java.util.stream.BaseStream
close, isParallel, onClose, 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- функция, не зависящая от состояния, применяемая к каждому элементу, которая генерирует поток новых значений - Возвращает:
- новый поток
- См. также:
Stream.flatMap(Function)
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(); - Параметры:
-
action- действие, не зависящее от состояния, выполняемое над элементами при их потреблении из потока - Возвращает:
- новый поток
limit
DoubleStream limit(long maxSize)
Возвращает поток, содержащий элементы этого потока, усечённые до длины не более maxSize.
- Примечание API:
- В то время как
limit()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийmaxSize, посколькуlimit(n)ограничено возвращением не только n элементов, но и первых n элементов в порядке встреч. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюlimit()в параллельных конвейерах, если семантика вашей ситуации это допускает. Если требуется согласованность с порядком встречи, и у вас наблюдается плохая производительность или использование памяти сlimit()в параллельных конвейерах, переключение на последовательное выполнение сsequential()может улучшить производительность. - Параметры:
-
maxSize- количество элементов, до которых должен быть ограничен поток - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиmaxSizeотрицательно
skip
DoubleStream skip(long n)
Возвращает поток, содержащий оставшиеся элементы этого потока после удаления первых n элементов потока. Если этот поток содержит меньше, чем n элементов, будет возвращен пустой поток.
- Примечание API:
- В то время как
skip()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийn, посколькуskip(n)ограничено пропуском не только n элементов, но и первых n элементов в порядке встречи. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюskip()в параллельных конвейерах, если семантика вашей ситуации это допускает. Если требуется согласованность с порядком встречи, и у вас наблюдается плохая производительность или использование памяти сskip()в параллельных конвейерах, переключение на последовательное выполнение сsequential()может улучшить производительность. - Параметры:
-
n- количество ведущих элементов, которые нужно пропустить - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиnотрицательно
forEach
void forEach(DoubleConsumer action)
Выполняет действие для каждого элемента этого потока.
Это конечная операция.
Для параллельных потоковых конвейеров эта операция не гарантирует соблюдение порядка встречи потока, поскольку это бы принесло в жертву выгоду параллельности. Для любого заданного элемента действие может быть выполнено в любое время и в любом потоке, выбранном библиотекой. Если действие имеет доступ к общим данным, оно несет ответственность за предоставление необходимой синхронизации.
- Параметры:
-
action- действие, не зависящее от состояния, выполняемое над элементами
forEachOrdered
void forEachOrdered(DoubleConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, имеющих определенный порядок встречи.
Это конечная операция.
- Параметры:
-
action- действие, не зависящее от состояния, выполняемое над элементами - См. также:
forEach(DoubleConsumer)
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- ассоциативная, не взаимодействующая, бессостоятельная функция для объединения двух значений - Возвращает:
- результат сведения
- См. также:
-
sum(),min(),max(),average()
reduce
OptionalDouble reduce(DoubleBinaryOperator op)
Выполняет сведение над элементами этого потока, используя ассоциативную функцию накопления и возвращает OptionalDouble, описывающую значение, полученное в результате сведения, если оно существует. Это эквивалентно:
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- ассоциативная, не взаимодействующая, бессостоятельная функция для объединения двух значений - Возвращает:
- результат сведения
- См. также:
reduce(double, DoubleBinaryOperator)
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- ассоциативная, не взаимодействующая, бессостоятельная функция для объединения двух значений, которая должна быть совместима с функцией аккумулятора - Возвращает:
- результат сведения
- См. также:
Stream.collect(Supplier, BiConsumer, BiConsumer)
sum
double sum()
Возвращает сумму элементов в этом потоке. Суммирование является частным случаем сведения. Если бы суммирование с плавающей точкой было точным, этот метод был бы эквивалентен:
return reduce(0, Double::sum);Однако, поскольку суммирование с плавающей точкой не является точным, вышеуказанный код не обязательно эквивалентен вычислению суммы, выполненному этим методом.
Если любой элемент потока является NaN или сумма на каком-либо этапе является NaN, то сумма будет NaN. Значение суммы с плавающей точкой зависит как от входных значений, так и от порядка операций сложения. Порядок операций сложения в этом методе намеренно не определен, чтобы предоставить гибкость реализации для повышения скорости и точности вычисленного результата. В частности, этот метод может быть реализован с помощью компенсированного суммирования или другого метода для уменьшения границы ошибки в численной сумме по сравнению с простым суммированием double значений.
Это конечная операция.
- Примечание API:
- Элементы, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты.
- Возвращает:
- сумма элементов в этом потоке
min
OptionalDouble min()
Возвращает OptionalDouble, описывающий минимальный элемент этого потока, или пустой OptionalDouble, если этот поток пустой. Минимальный элемент будет Double.NaN , если какой-либо элемент потока был NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Это частный случай сведения и эквивалентен:
return reduce(Double::min);
Это конечная операция.
- Возвращает:
OptionalDoubleсодержащий минимальный элемент этого потока или пустой необязательный объект, если поток пустой
max
OptionalDouble max()
Возвращает OptionalDouble, описывающий максимальный элемент этого потока, или пустой OptionalDouble, если этот поток пустой. Максимальный элемент будет Double.NaN , если какой-либо элемент потока был NaN. В отличие от операторов числового сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Это частный случай сведения и эквивалентен:
return reduce(Double::max);
Это конечная операция.
- Возвращает:
OptionalDouble, содержащий максимальный элемент этого потока, или пустой необязательный объект, если поток пустой
count
long count()
Возвращает количество элементов в этом потоке. Это частный случай сведения и эквивалентно:
return mapToLong(e -> 1L).sum();
Это конечная операция.
- Возвращает:
- количество элементов в этом потоке
average
OptionalDouble average()
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный объект, если этот поток пустой. Если какое-либо записанное значение является NaN или сумма на каком-либо этапе является NaN, то среднее значение будет NaN.
Возвращаемое среднее значение может зависеть от порядка записи значений. Этот метод может быть реализован с использованием компенсированного суммирования или другого метода для уменьшения границы ошибки в numerical sum, используемом для вычисления среднего значения.
Среднее значение является частным случаем сведения.
Это конечная операция.
- Примечание API:
- Элементы, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты.
- Возвращает:
OptionalDoubleсодержащий среднее значение элемента этого потока, или пустой необязательный объект, если поток пустой
summaryStatistics
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если поток пуст - См. также:
findFirst()
boxed
Stream<Double> boxed()
Возвращает Stream, содержащий элементы этого потока, упакованные в Double.
- Возвращает:
Streamсодержащий элементы этого потока, каждый упакованный вDouble
sequential
DoubleStream sequential()
Описание скопировано из интерфейса: BaseStream
Возвращает эквивалентный поток, который является последовательным. Может вернуть себя, либо потому, что поток уже был последовательным, либо потому, что состояние базового потока было изменено на последовательное.
- Определено в:
-
sequentialв интерфейсеBaseStream<Double,DoubleStream> - Возвращает:
- последовательный поток
parallel
DoubleStream parallel()
Описание скопировано из интерфейса: BaseStream
Возвращает эквивалентный поток, который является параллельным. Может вернуть себя, либо потому, что поток уже был параллельным, либо потому, что состояние базового потока было изменено на параллельное.
- Определено в:
-
parallelв интерфейсеBaseStream<Double,DoubleStream> - Возвращает:
- параллельный поток
iterator
PrimitiveIterator.OfDouble iterator()
Описание скопировано из интерфейса: BaseStream
Возвращает итератор для элементов этого потока.
- Определено в:
-
iteratorв интерфейсеBaseStream<Double,DoubleStream> - Возвращает:
- итератор элементов для этого потока
spliterator
Spliterator.OfDouble spliterator()
Описание скопировано из интерфейса: BaseStream
Возвращает разделитель для элементов этого потока.
- Определено в:
-
spliteratorв интерфейсеBaseStream<Double,DoubleStream> - Возвращает:
- разделитель элементов для этого потока
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.
- Параметры:
-
seed- начальный элемент -
f- функция, применяемая к предыдущему элементу для создания нового элемента - Возвращает:
- новый последовательный
DoubleStream
generate
static DoubleStream generate(DoubleSupplier s)
Возвращает бесконечный неупорядоченный последовательный поток, где каждый элемент генерируется предоставленным DoubleSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т.д.
- Параметры:
-
s-DoubleSupplierдля сгенерированных элементов - Возвращает:
- новый бесконечный неупорядоченный последовательный
DoubleStream
concat
static DoubleStream concat(DoubleStream a,
DoubleStream b) Создаёт лениво конкатенированный поток, элементы которого — все элементы первого потока, за которыми следуют все элементы второго потока. Результирующий поток упорядочен, если оба входных потока упорядочены, и параллелен, если любой из входных потоков параллелен. При закрытии результирующего потока вызываются обработчики закрытия для обоих входных потоков.
- Примечание реализации:
- Следует соблюдать осторожность при создании потоков с повторяющейся конкатенацией. Доступ к элементу глубоко конкатенированного потока может привести к глубоким цепочкам вызовов или даже к
StackOverflowException. - Параметры:
-
a- первый поток -
b- второй поток - Возвращает:
- конкатенация двух входных потоков
© 1993, 2020, 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.