Spec-Zone .ru
спецификации, руководства, описания, API
|
T
- тип элементовpublic interface Stream<T>
filter
и map
, и терминальные операции (использующий содержание потока, чтобы привести к результату или побочному эффекту), такой как forEach
, findFirst
, и iterator
. Как только работа была выполнена на потоке, это считают использованным и больше применимым для других операций. Для последовательных потоковых конвейеров все операции выполняются во встретиться порядке конвейерного источника, если у конвейерного источника есть определенный, встречаются с порядком.
Для параллельных потоковых конвейеров, если иначе не определено, промежуточные операции с потоками сохраняют встретиться порядок своего источника, и терминальные операции уважают встретиться порядок своего источника, если у источника есть встретиться порядок. При условии, что и параметры к операциям с потоками удовлетворяют требования невмешательства, и за исключением различий, являющихся результатом отсутствия определенного, встречаются с порядком, результатом потокового конвейера должна быть конюшня через массовые казни тех же самых операций на том же самом источнике. Однако, синхронизация и поток, в котором происходят побочные эффекты (для тех операций, которым позволяют произвести побочные эффекты, такой как forEach(Consumer)
), явно недетерминированы для параллельного выполнения потоковых конвейеров.
Если не указано иное, передача a null
параметр любому потоковому методу может привести к a NullPointerException
.
iterator()
или spliterator()
операции, чтобы выполнить управляемый обход.Модификатор и Тип | Метод и Описание |
---|---|
boolean |
allMatch(Predicate<? super T> predicate)
Возвраты, соответствуют ли все элементы этого потока обеспеченный предикат.
|
boolean |
anyMatch(Predicate<? super T> predicate)
Возвраты, соответствуют ли какие-либо элементы этого потока обеспеченный предикат.
|
static <T> StreamBuilder<T> |
builder()
Возвращает разработчика для a
Stream . |
<R> R |
collect(Collector<? super T,R> collector)
Выполняет изменчивую работу сокращения на элементах этого потока, используя a
Collector объект описать сокращение. |
<R> R |
collect(Supplier<R> resultFactory, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
Выполняет изменчивую работу сокращения на элементах этого потока.
|
long |
count()
Возвращает количество элементов в этом потоке.
|
Stream<T> |
distinct()
Возвращает поток, состоящий из отличных элементов (согласно
Object.equals(Object) ) из этого потока. |
static <T> Stream<T> |
empty()
Возвращает пустое последовательное
Stream . |
Stream<T> |
filter(Predicate<? super T> predicate)
Возвращает поток, состоящий из элементов этого потока, которые соответствуют данный предикат.
|
Optional<T> |
findAny()
Возвраты
Optional описание некоторого элемента потока, или пустого Optional если поток пуст. |
Optional<T> |
findFirst()
Возвраты
Optional описание первого элемента этого потока (во встретиться порядке), или пустое Optional если поток пуст. |
<R> Stream<R> |
flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченную функцию отображения к каждому элементу.
|
DoubleStream |
flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)
Возвраты a
DoubleStream состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. |
IntStream |
flatMapToInt(Function<? super T,? extends IntStream> mapper)
Возвраты
IntStream состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. |
LongStream |
flatMapToLong(Function<? super T,? extends LongStream> mapper)
Возвраты a
LongStream состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. |
void |
forEach(Consumer<? super T> action)
Выполняет действие для каждого элемента этого потока.
|
void |
forEachOrdered(Consumer<? super T> action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в, встречаются с порядком на потоки, у которых есть определенный, встречаются с порядком.
|
static <T> Stream<T> |
generate(Supplier<T> s)
Возвращает последовательное
Stream где каждый элемент сгенерирован a Supplier . |
boolean |
isParallel()
Возвраты, выполнился ли бы этот поток, когда выполняющийся, параллельно (не принимающий дальнейшей модификации потока, такого как добавление дальнейших промежуточных операций или изменение его параллелизма).
|
static <T> Stream<T> |
iterate(T seed, UnaryOperator<T> f)
Возвращает последовательное большое количество
Stream произведенный итеративным приложением функции f к начальному элементу seed , создание a Stream состоя из seed , f(seed) , f(f(seed)) , и т.д.. |
Iterator<T> |
iterator()
Возвращает iterator для элементов этого потока.
|
Stream<T> |
limit(long maxSize)
Возвращает поток, состоящий из элементов этого потока, усеченного, чтобы не быть больше чем
maxSize в длине. |
<R> Stream<R> |
map(Function<? super T,? extends R> mapper)
Возвращает поток, состоящий из результатов применения заданной функции к элементам этого потока.
|
DoubleStream |
mapToDouble(ToDoubleFunction<? super T> mapper)
Возвраты a
DoubleStream состоя из результатов применения заданной функции к элементам этого потока. |
IntStream |
mapToInt(ToIntFunction<? super T> mapper)
Возвраты
IntStream состоя из результатов применения заданной функции к элементам этого потока. |
LongStream |
mapToLong(ToLongFunction<? super T> mapper)
Возвраты a
LongStream состоя из результатов применения заданной функции к элементам этого потока. |
Optional<T> |
max(Comparator<? super T> comparator)
Возвращает максимальный элемент этого потока согласно обеспеченному
Comparator . |
Optional<T> |
min(Comparator<? super T> comparator)
Возвращает минимальный элемент этого потока согласно обеспеченному
Comparator . |
boolean |
noneMatch(Predicate<? super T> predicate)
Возвраты, не соответствуют ли никакие элементы этого потока обеспеченный предикат.
|
static <T> Stream<T> |
of(T... values)
Возвращает последовательный поток, элементы которого являются указанными значениями.
|
static <T> Stream<T> |
of(T t)
Возвращает последовательное
Stream содержа единственный элемент. |
S |
parallel()
Возвращает эквивалентный поток, который параллелен.
|
Stream<T> |
peek(Consumer<? super T> consumer)
Возвращает поток, состоящий из элементов этого потока, дополнительно выполняя обеспеченное действие на каждом элементе, поскольку элементы используются от получающегося потока.
|
Optional<T> |
reduce(BinaryOperator<T> accumulator)
Выполняет сокращение на элементах этого потока, используя ассоциативную функцию накопления, и возвращается
Optional описание уменьшенного значения, если любой. |
T |
reduce(T identity, BinaryOperator<T> accumulator)
Выполняет сокращение на элементах этого потока, используя обеспеченное значение идентификационных данных и ассоциативную функцию накопления, и возвращает уменьшенное значение.
|
<U> U |
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
Выполняет сокращение на элементах этого потока, используя обеспеченные идентификационные данные, функцию накопления, и объединяющиеся функции.
|
S |
sequential()
Возвращает эквивалентный поток, который последователен.
|
Stream<T> |
sorted()
Возвращает поток, состоящий из элементов этого потока, сортированного согласно естественному порядку.
|
Stream<T> |
sorted(Comparator<? super T> comparator)
Возвращает поток, состоящий из элементов этого потока, сортированного согласно обеспеченному
Comparator . |
Spliterator<T> |
spliterator()
Возвращает spliterator для элементов этого потока.
|
Stream<T> |
substream(long startInclusive)
Возвращает поток, состоящий из остающихся элементов этого потока после индексации
startInclusive элементы в поток. |
Stream<T> |
substream(long startInclusive, long endExclusive)
Возвращает поток, состоящий из остающихся элементов этого потока после индексации
startInclusive элементы в поток и усеченный, чтобы содержать не больше, чем endExclusive - startInclusive элементы. |
Объект[] |
toArray()
Возвращает массив, содержащий элементы этого потока.
|
<A> A[] |
toArray(IntFunction<A[]> generator)
Возвращает массив, содержащий элементы этого потока, используя обеспеченный
generator функция, чтобы выделить возвращенный массив. |
S |
unordered()
Возвращает эквивалентный поток, который неупорядочивается.
|
Stream<T> filter(Predicate<? super T> predicate)
Это - промежуточная работа.
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к каждому элементу, чтобы определить, должно ли это быть включено<R> Stream<R> map(Function<? super T,? extends R> mapper)
Это - промежуточная работа.
R
- Тип элемента нового потокаmapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуIntStream mapToInt(ToIntFunction<? super T> mapper)
IntStream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуLongStream mapToLong(ToLongFunction<? super T> mapper)
LongStream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементуDoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
DoubleStream
состоя из результатов применения заданной функции к элементам этого потока. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
null
, это обрабатывается, как будто результатом является пустой поток. Это - промежуточная работа.
flatMap()
работа имеет эффект применения "одного многим" tranformation к элементам потока, и затем выравниванию получающихся элементов в новый поток. Например, если orders
поток заказов на поставку, и каждый заказ на поставку содержит набор элементов строки, тогда следующее производит поток элементов строки:
orderStream.flatMap(order -> order.getLineItems().stream())...
R
- Тип элемента нового потокаmapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу, который производит поток новых значенийIntStream flatMapToInt(Function<? super T,? extends IntStream> mapper)
IntStream
состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. Если результат отображающейся функции null
, это обрабатывается, как будто результатом является пустой поток. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу, который производит поток новых значенийLongStream flatMapToLong(Function<? super T,? extends LongStream> mapper)
LongStream
состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. Если результат отображающейся функции null
, это обрабатывается, как будто результатом является пустой поток. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу, который производит поток новых значенийDoubleStream flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)
DoubleStream
состоя из результатов замены каждого элемента этого потока с содержанием потока, произведенного, применяя обеспеченное отображение, функционирует к каждому элементу. Если результат отображающейся функции null
, это обрабатывается, как будто результатом является пустой поток. Это - промежуточная работа.
mapper
- невмешательство, функция не сохраняющая состояние, чтобы примениться к каждому элементу, который производит поток новых значенийStream<T> distinct()
Object.equals(Object)
) из этого потока. Stream<T> sorted()
Comparable
, a java.lang.ClassCastException
может быть брошен, когда потоковый конвейер выполняется. Stream<T> sorted(Comparator<? super T> comparator)
Comparator
. comparator
- невмешательство, не сохраняющее состояние Comparator
использоваться, чтобы сравнить потоковые элементыStream<T> peek(Consumer<? super T> 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.intoList());
consumer
- невмешивающееся действие, чтобы выполнить на элементах, поскольку они используются от потокаStream<T> limit(long maxSize)
maxSize
в длине. maxSize
- число элементов поток должно быть ограниченоIllegalArgumentException
- если maxSize
отрицательноStream<T> substream(long startInclusive)
startInclusive
элементы в поток. Если startInclusive
индексируйте находится мимо конца этого потока тогда будет возвращен, пустой поток. startInclusive
- число ведущих элементов, чтобы пропуститьIllegalArgumentException
- если startInclusive
отрицательноStream<T> substream(long startInclusive, long endExclusive)
startInclusive
элементы в поток и усеченный, чтобы содержать не больше, чем endExclusive - startInclusive
элементы. Если startInclusive
индексируйте находится мимо конца этого потока тогда будет возвращен, пустой поток. startInclusive
- стартовая позиция подпотока, включительноendExclusive
- конечная позиция подпотока, монопольногоIllegalArgumentException
- если startInclusive
или endExclusive
отрицательно или startInclusive
больше чем endExclusive
void forEach(Consumer<? super T> action)
Это - терминальная работа.
Для параллельных потоковых конвейеров эта работа не гарантирует, что уважала встретиться порядок потока, поскольку выполнение так пожертвовало бы преимуществом параллелизма. Для любого данного элемента действие может быть выполнено в любое время, и в любом потоке выбирает библиотека. Если общее состояние доступов действия, это ответственно за обеспечение необходимой синхронизации.
action
- невмешивающееся действие, чтобы выполнить на элементахvoid forEachOrdered(Consumer<? super T> action)
Это - терминальная работа.
action
- невмешивающееся действие, чтобы выполнить на элементахforEach(Consumer)
Object[] toArray()
Это - терминальная работа.
<A> A[] toArray(IntFunction<A[]> generator)
generator
функция, чтобы выделить возвращенный массив. Это - терминальная работа.
A
- тип элемента получающегося массиваgenerator
- функция, которая производит новый массив требуемого типа и обеспеченной длиныArrayStoreException
- если тип времени выполнения массива, возвращенного из генератора массива, не является супертипом типа времени выполнения каждого элемента в этом потокеT reduce(T identity, BinaryOperator<T> accumulator)
T result = identity;
for (T element : this stream)
result = accumulator.apply(result, element)
return result;
но не ограничивается выполниться последовательно. identity
значение должно быть идентификационными данными для функции аккумулятора. Это означает это для всех t
, accumulator.apply(identity, t)
равно t
. accumulator
функция должна быть ассоциативной функцией.
Это - терминальная работа.
Integer sum = integers.reduce(0, (a, b) -> a+b);
или более сжато:
Integer sum = integers.reduce(0, Integer::sum);
В то время как это может казаться более окольным способом выполнить агрегацию по сравнению с простым видоизменением рабочего общего количества в цикле, операции сокращения параллелизируют более корректно, не нуждаясь в дополнительной синхронизации и со значительно уменьшенным риском гонок данных.
identity
- значение идентификационных данных для накапливающейся функцииaccumulator
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значенияOptional<T> reduce(BinaryOperator<T> accumulator)
Optional
описание уменьшенного значения, если любой. Это эквивалентно:
boolean foundAny = false;
T result = null;
for (T element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.apply(result, element);
}
return foundAny ? Optional.of(result) : Optional.empty();
но не ограничивается выполниться последовательно. accumulator
функция должна быть ассоциативной функцией.
Это - терминальная работа.
accumulator
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значенияreduce(Object, BinaryOperator)
, min(java.util.Comparator)
, max(java.util.Comparator)
<U> U reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
U result = identity;
for (T element : this stream)
result = accumulator.apply(result, element)
return result;
но не ограничивается выполниться последовательно. identity
значение должно быть идентификационными данными для функции объединителя. Это означает это для всех u
, combiner(identity, u)
равно u
. Дополнительно, combiner
функция должна быть совместимой с accumulator
функция; для всех u
и t
, следующее должно содержать:
combiner.apply(u, accumulator.apply(identity, t)) == accumulator.apply(u, t)
Это - терминальная работа.
map
и reduce
операции. accumulator
функционируйте действия как сплавленный картопостроитель и аккумулятор, который может иногда быть более эффективным чем отдельное отображение и сокращение, такой как в случае, где знание ранее уменьшенного значения позволяет Вам избегать некоторого вычисления.U
- Тип результатаidentity
- значение идентификационных данных для функции объединителяaccumulator
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы включить дополнительный элемент в результатcombiner
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значения, которые должны быть совместимыми с функцией аккумулятораreduce(BinaryOperator)
, reduce(Object, BinaryOperator)
<R> R collect(Supplier<R> resultFactory, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
ArrayList
, и элементы включаются, обновляя состояние результата, а не заменяя результат. Это приводит к результату, эквивалентному:
R result = resultFactory.get();
for (T element : this stream)
accumulator.accept(result, element);
return result;
Как reduce(Object, BinaryOperator)
, collect
операции могут быть параллелизированы, не требуя дополнительной синхронизации.
Это - терминальная работа.
collect()
. Например, следующее накопит строки в ArrayList:
List<String> asList = stringStream.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
Следующее возьмет поток строк и связывает их в единственную строку:
String concat = stringStream.collect(StringBuilder::new, StringBuilder::append,
StringBuilder::append)
.toString();
R
- тип результатаresultFactory
- функция, которая создает новый контейнер результата. Для параллельного выполнения эта функция может быть вызвана многократно и должна возвратить новое значение каждый раз.accumulator
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы включить дополнительный элемент в результатcombiner
- ассоциативный
невмешательство, не сохраняющее состояние функционирует для того, чтобы объединить два значения, которые должны быть совместимыми с функцией аккумулятора<R> R collect(Collector<? super T,R> collector)
Collector
объект описать сокращение. A Collector
инкапсулирует функции, используемые в качестве параметров collect(Supplier, BiConsumer, BiConsumer)
, учет повторного использования стратегий набора, и состава собирает операции, такие как многоуровневая группировка или разделение. Это - терминальная работа.
Когда выполняющийся параллельно, многократные промежуточные результаты можно инстанцировать, заполнили, и объединились, чтобы поддержать изоляцию изменчивых структур данных. Поэтому, даже когда выполняющийся параллельно с неориентированными на многопотоковое исполнение структурами данных (такой как ArrayList
), никакая дополнительная синхронизация не необходима для параллельного сокращения.
List<String> asList = stringStream.collect(Collectors.toList());
Следующее классифицирует Person
объекты городом:
Map<String, Collection<Person>> peopleByCity
= personStream.collect(Collectors.groupBy(Person::getCity));
Следующее классифицирует Person
объекты состоянием и городом, располагаясь каскадом два Collector
s вместе:
Map<String, Map<String, Collection<Person>>> peopleByStateAndCity
= personStream.collect(Collectors.groupBy(Person::getState,
Collectors.groupBy(Person::getCity)));
R
- тип результатаcollector
- Collector
описание сокращенияcollect(Supplier, BiConsumer, BiConsumer)
, Collectors
Optional<T> min(Comparator<? super T> comparator)
Comparator
. Это - особый случай сокращения. Это - терминальная работа.
comparator
- невмешательство, не сохраняющее состояние Comparator
использовать, чтобы сравнить элементы этого потокаOptional
описание минимального элемента этого потока, или пустого Optional
если поток пустOptional<T> max(Comparator<? super T> comparator)
Comparator
. Это - особый случай сокращения. Это - терминальная работа.
comparator
- невмешательство, не сохраняющее состояние Comparator
использовать, чтобы сравнить элементы этого потокаOptional
описание максимального элемента этого потока, или пустого Optional
если поток пустlong count()
return mapToLong(e -> 1L).sum();
Это - терминальная работа.
boolean anyMatch(Predicate<? super T> predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если какие-либо элементы потока соответствуют обеспеченный предикат иначе false
boolean allMatch(Predicate<? super T> predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если все элементы потока соответствуют обеспеченный предикат иначе false
boolean noneMatch(Predicate<? super T> predicate)
predicate
- невмешательство, предикат не сохраняющий состояние, чтобы примениться к элементам этого потокаtrue
если никакие элементы потока не соответствуют обеспеченный предикат иначе false
Optional<T> findFirst()
Optional
описание первого элемента этого потока (во встретиться порядке), или пустое Optional
если поток пуст. Если поток имеет, не встречаются с порядком, чем любой элемент может быть возвращен. Optional
описание первого элемента этого потока, или пустого Optional
если поток пустNullPointerException
- если выбранный элемент является нулемOptional<T> findAny()
Optional
описание некоторого элемента потока, или пустого Optional
если поток пуст. Это - закорачивающая терминальная работа.
Поведение этой работы явно недетерминировано; это свободно выбрать любой элемент в потоке. Это должно учесть максимальную производительность в параллельных операциях; стоимость - то, что многократные вызовы на том же самом источнике, возможно, не возвращают тот же самый результат. (Если первый элемент во встретиться порядке требуется, использовать findFirst()
вместо этого.)
Optional
описание некоторого элемента этого потока, или пустого Optional
если поток пустNullPointerException
- если выбранный элемент является нулемfindFirst()
static <T> StreamBuilder<T> builder()
Stream
.T
- тип элементовstatic <T> Stream<T> empty()
Stream
.T
- тип потоковых элементовstatic <T> Stream<T> of(T t)
Stream
содержа единственный элемент.T
- тип потоковых элементовt
- единственный элемент@SafeVarargs static <T> Stream<T> of(T... values)
T
- тип потоковых элементовvalues
- элементы нового потокаstatic <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
Stream
произведенный итеративным приложением функции f
к начальному элементу seed
, создание a Stream
состоя из seed
, f(seed)
, f(f(seed))
, и т.д.. Первый элемент (позиция 0
) в Stream
будет обеспеченный seed
. Для n > 0
, элемент в позиции n
, будет результат применения функции f
к элементу в позиции n - 1
.
T
- тип потоковых элементовseed
- начальный элементf
- функция, которая будет применена к к предыдущему элементу, чтобы произвести новый элементStream
static <T> Stream<T> generate(Supplier<T> s)
Stream
где каждый элемент сгенерирован a Supplier
. Это является подходящим для того, чтобы генерировать постоянные потоки, потоки случайных элементов, и т.д.T
- тип потоковых элементовs
- Supplier
из сгенерированных элементовStream
Iterator<T> iterator()
Это - терминальная работа.
Spliterator<T> spliterator()
Это - терминальная работа.
boolean isParallel()
true
если этот поток выполнился бы параллельно если выполняющийся без дальнейшей модификации иначе false
S sequential()
Это - промежуточная работа.
S parallel()
Это - промежуточная работа.
S unordered()
Это - промежуточная работа.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92