Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface DoubleStream
filter
и map
, и терминальные операции (использующий содержание потока, чтобы привести к результату или побочному эффекту), такой как forEach
, findFirst
, и iterator
. Как только работа была выполнена на потоке, это считают использованным и больше применимым для других операций. Для последовательных потоковых конвейеров все операции выполняются во встретиться порядке конвейерного источника, если у конвейерного источника есть определенный, встречаются с порядком.
Для параллельных потоковых конвейеров, если иначе не определено, промежуточные операции с потоками сохраняют встретиться порядок своего источника, и терминальные операции уважают встретиться порядок своего источника, если у источника есть встретиться порядок. При условии, что и параметры к операциям с потоками удовлетворяют требования невмешательства, и за исключением различий, являющихся результатом отсутствия определенного, встречаются с порядком, результатом потокового конвейера должна быть конюшня через массовые казни тех же самых операций на том же самом источнике. Однако, синхронизация и поток, в котором происходят побочные эффекты (для тех операций, которым позволяют произвести побочные эффекты, такой как forEach(DoubleConsumer)
), явно недетерминированы для параллельного выполнения потоковых конвейеров.
Если не указано иное, передача a null
параметр любому потоковому методу может привести к a NullPointerException
.
iterator()
или spliterator()
операции, чтобы выполнить управляемый обход.Модификатор и Тип | Метод и Описание |
---|---|
boolean |
allMatch(DoublePredicate predicate)
Возвраты, соответствуют ли все элементы этого потока обеспеченный предикат.
|
boolean |
anyMatch(DoublePredicate predicate)
Возвраты, соответствуют ли какие-либо элементы этого потока обеспеченный предикат.
|
OptionalDouble |
average()
Возвраты
OptionalDouble описание среднего числа элементов этого потока, или пустого дополнительного, если этот поток пуст. |
Stream<Double> |
boxed()
Возвраты a
Stream состоя из элементов этого потока, упакованного к Double . |
static StreamBuilder.OfDouble |
builder()
Возвращает разработчика для a
DoubleStream . |
<R> R |
collect(Supplier<R> resultFactory, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет изменчивую работу сокращения на элементах этого потока.
|
long |
count()
Возвращает количество элементов в этом потоке.
|
DoubleStream |
distinct()
Возвращает поток, состоящий из отличных элементов этого потока.
|
static DoubleStream |
empty()
Возвращает пустое последовательное
DoubleStream . |
DoubleStream |
filter(DoublePredicate predicate)
Возвращает поток, состоящий из элементов этого потока, которые соответствуют данный предикат.
|
OptionalDouble |
findAny()
Возвраты
OptionalDouble описание некоторого элемента потока, или пустого OptionalDouble если поток пуст. |
OptionalDouble |
findFirst()
Возвраты
OptionalDouble описание первого элемента этого потока (во встретиться порядке), или пустое OptionalDouble если поток пуст. |
DoubleStream |
flatMap(DoubleFunction<? extends DoubleStream> mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченную функцию отображения к каждому элементу.
|
void |
forEach(DoubleConsumer action)
Выполняет действие для каждого элемента этого потока.
|
void |
forEachOrdered(DoubleConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в, встречаются с порядком на потоки, у которых есть определенный, встречаются с порядком.
|
static DoubleStream |
generate(DoubleSupplier s)
Возвращает последовательное
DoubleStream где каждый элемент сгенерирован DoubleSupplier . |
boolean |
isParallel()
Возвраты, выполнился ли бы этот поток, когда выполняющийся, параллельно (не принимающий дальнейшей модификации потока, такого как добавление дальнейших промежуточных операций или изменение его параллелизма).
|
static DoubleStream |
iterate(double seed, DoubleUnaryOperator f)
Возвращает последовательное большое количество
DoubleStream произведенный итеративным приложением функции f к начальному элементу seed , создание a Stream состоя из seed , f(seed) , f(f(seed)) , и т.д.. |
PrimitiveIterator. OfDouble |
iterator()
Возвращает iterator для элементов этого потока.
|
DoubleStream |
limit(long maxSize)
Возвращает поток, состоящий из элементов этого потока, усеченного, чтобы не быть больше чем
maxSize в длине. |
DoubleStream |
map(DoubleUnaryOperator mapper)
Возвращает поток, состоящий из результатов применения заданной функции к элементам этого потока.
|
IntStream |
mapToInt(DoubleToIntFunction mapper)
Возвраты
IntStream состоя из результатов применения заданной функции к элементам этого потока. |
LongStream |
mapToLong(DoubleToLongFunction mapper)
Возвраты a
LongStream состоя из результатов применения заданной функции к элементам этого потока. |
<U> Stream<U> |
mapToObj(DoubleFunction<? extends U> mapper)
Возвращает оцененный объекту
Stream состоя из результатов применения заданной функции к элементам этого потока. |
OptionalDouble |
max()
Возвраты
OptionalDouble описание максимального элемента этого потока, или пустого OptionalDouble, если этот поток пуст. |
OptionalDouble |
min()
Возвраты
OptionalDouble описание минимального элемента этого потока, или пустого OptionalDouble, если этот поток пуст. |
boolean |
noneMatch(DoublePredicate predicate)
Возвраты, не соответствуют ли никакие элементы этого потока обеспеченный предикат.
|
static DoubleStream |
of(double... values)
Возвращает последовательный поток, элементы которого являются указанными значениями.
|
static DoubleStream |
of(double t)
Возвращает последовательное
DoubleStream содержа единственный элемент. |
DoubleStream |
parallel()
Возвращает эквивалентный поток, который параллелен.
|
DoubleStream |
peek(DoubleConsumer consumer)
Возвращает поток, состоящий из элементов этого потока, дополнительно выполняя обеспеченное действие на каждом элементе, поскольку элементы используются от получающегося потока.
|
static DoubleStream |
range(double startInclusive, double endExclusive)
Возвращает последовательное
DoubleStream от startInclusive (включительно) к endExclusive (монопольный) инкрементным шагом 1.0. |
static DoubleStream |
range(double startInclusive, double endExclusive, double step)
Возвращает последовательное
DoubleStream от startInclusive (включительно) к endExclusive (монопольный) step . |
OptionalDouble |
reduce(DoubleBinaryOperator op)
Выполняет сокращение на элементах этого потока, используя ассоциативную функцию накопления, и возвращается
OptionalDouble описание уменьшенного значения, если любой. |
double |
reduce(double identity, DoubleBinaryOperator op)
Выполняет сокращение на элементах этого потока, используя обеспеченное значение идентификационных данных и ассоциативную функцию накопления, и возвращает уменьшенное значение.
|
DoubleStream |
sequential()
Возвращает эквивалентный поток, который последователен.
|
DoubleStream |
sorted()
Возвращает поток, состоящий из элементов этого потока в сортированном порядке.
|
Spliterator. OfDouble |
spliterator()
Возвращает spliterator для элементов этого потока.
|
DoubleStream |
substream(long startInclusive)
Возвращает поток, состоящий из остающихся элементов этого потока после индексации
startInclusive элементы в поток. |
DoubleStream |
substream(long startInclusive, long endExclusive)
Возвращает поток, состоящий из остающихся элементов этого потока после индексации
startInclusive элементы в поток и усеченный, чтобы содержать не больше, чем endExclusive - startInclusive элементы. |
double |
sum()
Возвращает сумму элементов в этом потоке.
|
DoubleSummaryStatistics |
summaryStatistics()
Возвраты a
DoubleSummaryStatistics описание различных сводных данных об элементах этого потока. |
double[] |
toArray()
Возвращает массив, содержащий элементы этого потока.
|
S |
unordered()
Возвращает эквивалентный поток, который неупорядочивается.
|
DoubleStream filter(DoublePredicate predicate)
Это - промежуточная работа.
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к каждому элементу, чтобы определить, должно ли это быть включеноDoubleStream map(DoubleUnaryOperator mapper)
Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу<U> Stream<U> mapToObj(DoubleFunction<? extends U> mapper)
Stream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
U
- тип элемента нового потокаmapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуIntStream mapToInt(DoubleToIntFunction mapper)
IntStream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуLongStream mapToLong(DoubleToLongFunction mapper)
LongStream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуDoubleStream flatMap(DoubleFunction<? extends DoubleStream> mapper)
Это - промежуточная работа.
flatMap()
работа имеет эффект применения "одного многим" tranformation к элементам потока, и затем выравниванию получающихся элементов в новый поток. Например, если orders
поток заказов на поставку, и каждый заказ на поставку содержит набор элементов строки, тогда следующее производит поток элементов строки:
orderStream.flatMap(order -> order.getLineItems().stream())...
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу, который производит DoubleStream
из новых значенийStream.flatMap(Function)
DoubleStream distinct()
Double.compare(double, double)
. DoubleStream sorted()
Double.compare(double, double)
. DoubleStream peek(DoubleConsumer consumer)
Это - промежуточная работа.
Для параллельных потоковых конвейеров действие можно вызвать в любое время, и в любом потоке элемент делается доступным восходящей работой. Если действие изменяет общее состояние, это ответственно за обеспечение необходимой синхронизации.
list.stream()
.filter(filteringFunction)
.peek(e -> {System.out.println("Filtered value: " + e); });
.map(mappingFunction)
.peek(e -> {System.out.println("Mapped value: " + e); });
.collect(Collectors.toDoubleSummaryStastistics());
consumer
- невмешивающееся действие, чтобы выполнить на элементах, поскольку они используются от потокаDoubleStream limit(long maxSize)
maxSize
в длине. maxSize
- число элементов поток должно быть ограниченоIllegalArgumentException
- если maxSize
отрицательноDoubleStream substream(long startInclusive)
startInclusive
элементы в поток. Если startInclusive
индексируйте находится мимо конца этого потока тогда будет возвращен, пустой поток. startInclusive
- число ведущих элементов, чтобы пропуститьIllegalArgumentException
- если startInclusive
отрицательноDoubleStream substream(long startInclusive, long endExclusive)
startInclusive
элементы в поток и усеченный, чтобы содержать не больше, чем endExclusive - startInclusive
элементы. Если startInclusive
индексируйте находится мимо конца этого потока тогда будет возвращен, пустой поток. startInclusive
- стартовая позиция подпотока, включительноendExclusive
- конечная позиция подпотока, монопольногоIllegalArgumentException
- если startInclusive
или endExclusive
отрицательно или startInclusive
больше чем endExclusive
void forEach(DoubleConsumer action)
Это - терминальная работа.
Для параллельных потоковых конвейеров эта работа не гарантирует, что уважала встретиться порядок потока, поскольку выполнение так пожертвовало бы преимуществом параллелизма. Для любого данного элемента действие может быть выполнено в любое время, и в любом потоке выбирает библиотека. Если общее состояние доступов действия, это ответственно за обеспечение необходимой синхронизации.
action
- невмешивающееся действие, чтобы выполнить на элементахvoid forEachOrdered(DoubleConsumer action)
Это - терминальная работа.
action
- невмешивающееся действие, чтобы выполнить на элементахforEach(DoubleConsumer)
double[] toArray()
Это - терминальная работа.
double reduce(double identity, DoubleBinaryOperator op)
double result = identity;
for (double element : this stream)
result = accumulator.apply(result, element)
return result;
но не ограничивается выполниться последовательно. identity
значение должно быть идентификационными данными для функции аккумулятора. Это означает это для всех x
, accumulator.apply(identity, x)
равно x
. accumulator
функция должна быть ассоциативной функцией.
Это - терминальная работа.
double sum = numbers.reduce(0, (a, b) -> a+b);
или более сжато:
double sum = numbers.reduce(0, Double::sum);
В то время как это может казаться более окольным способом выполнить агрегацию по сравнению с простым видоизменением рабочего общего количества в цикле, операции сокращения параллелизируют более корректно, не нуждаясь в дополнительной синхронизации и со значительно уменьшенным риском гонок данных.
identity
- значение идентификационных данных для накапливающейся функцииop
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значенияsum()
, min()
, max()
, average()
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.apply(result, element);
}
return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
но не ограничивается выполниться последовательно. accumulator
функция должна быть ассоциативной функцией.
Это - терминальная работа.
op
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значенияreduce(double, DoubleBinaryOperator)
<R> R collect(Supplier<R> resultFactory, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
ArrayList
, и элементы включаются, обновляя состояние результата, а не заменяя результат. Это приводит к результату, эквивалентному:
R result = resultFactory.get();
for (double element : this stream)
accumulator.accept(result, element);
return result;
Как reduce(double, DoubleBinaryOperator)
, collect
операции могут быть параллелизированы, не требуя дополнительной синхронизации.
Это - терминальная работа.
R
- тип результатаresultFactory
- функция, которая создает новый контейнер результата. Для параллельного выполнения эта функция может быть вызвана многократно и должна возвратить новое значение каждый раз.accumulator
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы включить дополнительный элемент в результатcombiner
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значения, которые должны быть совместимыми с функцией аккумулятораStream.collect(Supplier, BiConsumer, BiConsumer)
double sum()
NaN
или сумма в любой точке a NaN
тогда сумма будет NaN
. Это - особый случай сокращения и эквивалентно:
return reduce(0, Double::sum);
OptionalDouble min()
OptionalDouble
описание минимального элемента этого потока, или пустого OptionalDouble, если этот поток пуст. Минимальный элемент будет Double.NaN
если каким-либо потоковым элементом была НЭН. В отличие от числовых операторов сравнения, этот метод полагает, что отрицательный нуль строго меньше чем положительный нуль. Это - особый случай сокращения и эквивалентно:
return reduce(Double::min);
OptionalDouble
содержа минимальный элемент этого потока, или пустое дополнительное, если поток пустOptionalDouble max()
OptionalDouble
описание максимального элемента этого потока, или пустого OptionalDouble, если этот поток пуст. Максимальный элемент будет Double.NaN
если каким-либо потоковым элементом была НЭН. В отличие от числовых операторов сравнения, этот метод полагает, что отрицательный нуль строго меньше чем положительный нуль. Это - особый случай сокращения и эквивалентно:
return reduce(Double::max);
OptionalDouble
содержа максимальный элемент этого потока, или пустое дополнительное, если поток пустlong count()
return mapToLong(e -> 1L).sum();
Это - терминальная работа.
OptionalDouble average()
OptionalDouble
описание среднего числа элементов этого потока, или пустого дополнительного, если этот поток пуст. Возвращенное среднее число может измениться в зависимости от порядка, в котором встречаются с элементами. Это происходит из-за накопленной погрешности округления, кроме того, элементов отличающихся величин. Элементы, сортированные, увеличивая абсолютную величину, имеют тенденцию приводить к более точным результатам. Если какое-либо записанное значение является a NaN
или сумма в любой точке a NaN
тогда среднее число будет NaN
. Это - особый случай сокращения.OptionalDouble
содержа средний элемент этого потока, или пустое дополнительное, если поток пустDoubleSummaryStatistics summaryStatistics()
DoubleSummaryStatistics
описание различных сводных данных об элементах этого потока. Это - особый случай сокращения.DoubleSummaryStatistics
описание различных сводных данных об элементах этого потокаboolean anyMatch(DoublePredicate predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если какие-либо элементы потока соответствуют обеспеченный предикат иначе false
boolean allMatch(DoublePredicate predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если все элементы потока соответствуют обеспеченный предикат иначе false
boolean noneMatch(DoublePredicate predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если никакие элементы потока не соответствуют обеспеченный предикат иначе false
OptionalDouble findFirst()
OptionalDouble
описание первого элемента этого потока (во встретиться порядке), или пустое OptionalDouble
если поток пуст. Если поток имеет, не встречаются с порядком, чем любой элемент может быть возвращен. OptionalDouble
описание первого элемента этого потока, или пустого OptionalDouble
если поток пустOptionalDouble findAny()
OptionalDouble
описание некоторого элемента потока, или пустого OptionalDouble
если поток пуст. Это - закорачивающая терминальная работа.
Поведение этой работы явно недетерминировано; это свободно выбрать любой элемент в потоке. Это должно учесть максимальную производительность в параллельных операциях; стоимость - то, что многократные вызовы на том же самом источнике, возможно, не возвращают тот же самый результат. (Если первый элемент во встретиться порядке требуется, использовать findFirst()
вместо этого.)
OptionalDouble
описание некоторого элемента этого потока, или пустого OptionalDouble
если поток пустfindFirst()
Stream<Double> boxed()
Stream
состоя из элементов этого потока, упакованного к Double
.Stream
непротиворечивый из элементов этого потока, каждый упакованный к a Double
DoubleStream sequential()
Это - промежуточная работа.
DoubleStream parallel()
Это - промежуточная работа.
PrimitiveIterator.OfDouble iterator()
Это - терминальная работа.
Spliterator.OfDouble spliterator()
Это - терминальная работа.
static StreamBuilder.OfDouble builder()
DoubleStream
.static DoubleStream empty()
DoubleStream
.static DoubleStream of(double t)
DoubleStream
содержа единственный элемент.t
- единственный элементstatic DoubleStream of(double... values)
values
- элементы нового потокаstatic DoubleStream iterate(double seed, DoubleUnaryOperator f)
DoubleStream
произведенный итеративным приложением функции f
к начальному элементу seed
, создание a Stream
состоя из seed
, f(seed)
, f(f(seed))
, и т.д.. Первый элемент (позиция 0
) в DoubleStream
будет обеспеченный seed
. Для n > 0
, элемент в позиции n
, будет результат применения функции f
к элементу в позиции n - 1
.
seed
- начальный элементf
- функция, которая будет применена к к предыдущему элементу, чтобы произвести новый элементDoubleStream
static DoubleStream generate(DoubleSupplier s)
DoubleStream
где каждый элемент сгенерирован DoubleSupplier
. Это является подходящим для того, чтобы генерировать постоянные потоки, потоки случайных элементов, и т.д.s
- DoubleSupplier
для сгенерированных элементовDoubleStream
static DoubleStream range(double startInclusive, double endExclusive)
DoubleStream
от startInclusive
(включительно) к endExclusive
(монопольный) инкрементным шагом 1.0.
doubleRange(startInclusive, endExclusive, 1.0);
startInclusive
- (содержащее) начальное значениеendExclusive
- монопольная верхняя границаDoubleStream
для диапазона double
элементыstatic DoubleStream range(double startInclusive, double endExclusive, double step)
DoubleStream
от startInclusive
(включительно) к endExclusive
(монопольный) step
. Если startInclusive
больше чем или равен endExclusive
, возвращается пустой поток. Эквивалентная последовательность увеличения значений может быть произведена, последовательно используя a for
цикл следующим образом:
long size = (long) Math.ceil((startInclusive - endExclusive) / step);
long i = 0
for (double v = startInclusive; i < size; i++, v = startInclusive + step * i) {
...
}
startInclusive
- (содержащее) начальное значениеendExclusive
- монопольная верхняя границаstep
- различие между последовательными значениямиDoubleStream
для tne диапазона double
элементыIllegalArgumentException
- если step
меньше чем или равно 0. NaN
, или количество элементов в диапазоне было бы больше чем Long.MAX_VALUE
boolean isParallel()
true
если этот поток выполнился бы параллельно если выполняющийся без дальнейшей модификации иначе false
S unordered()
Это - промежуточная работа.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92