Интерфейс LongStream
- Все суперинтерфейсы:
- AutoCloseable, BaseStream<Long,LongStream>
public interface LongStream extends BaseStream<Long,LongStream>
Последовательность примитивных элементов со значениями типа long, поддерживающая последовательные и параллельные агрегирующие операции. Это примитивное специализированное представление Stream.
Следующий пример демонстрирует агрегирующую операцию с использованием Stream и LongStream, вычисляя сумму весов красных виджетов:
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum(); См. документацию класса Stream и документацию пакета java.util.stream для дополнительной спецификации потоков, операций с потоками, конвейеров потоков и параллелизма.- С момента:
- 1.8
- См. также:
-
Stream, java.util.stream
Вложенные классы
| Модификатор и тип | Интерфейс и описание |
|---|---|
static interface |
LongStream.Builder Изменяемый билдер для |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
allMatch(LongPredicate predicate) Возвращает значение true, если все элементы потока соответствуют предоставленному предикату. |
boolean |
anyMatch(LongPredicate predicate) Возвращает значение true, если хотя бы один элемент потока соответствует предоставленному предикату. |
DoubleStream |
asDoubleStream() Возвращает |
OptionalDouble |
average() Возвращает |
Stream<Long> |
boxed() Возвращает |
static LongStream.Builder |
builder() Возвращает билдер для |
<R> R |
collect(Supplier<R> supplier,
ObjLongConsumer<R> accumulator,
BiConsumer<R,R> combiner) Выполняет операцию изменяемого сокращения над элементами этого потока. |
static LongStream |
concat(LongStream a,
LongStream b) Создаёт лениво конкатенированный поток, элементы которого — все элементы первого потока, за которыми следуют все элементы второго потока. |
long |
count() Возвращает количество элементов в этом потоке. |
LongStream |
distinct() Возвращает поток, содержащий уникальные элементы этого потока. |
static LongStream |
empty() Возвращает пустой последовательный |
LongStream |
filter(LongPredicate predicate) Возвращает поток, содержащий элементы этого потока, которые соответствуют данному предикату. |
OptionalLong |
findAny() Возвращает |
OptionalLong |
findFirst() Возвращает |
LongStream |
flatMap(LongFunction<? extends LongStream> mapper) Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым потока, отображённого путём применения заданной функции отображения к каждому элементу. |
void |
forEach(LongConsumer action) Выполняет действие для каждого элемента этого потока. |
void |
forEachOrdered(LongConsumer action) Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, для которых определён порядок встречи. |
static LongStream |
generate(LongSupplier s) Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной |
static LongStream |
iterate(long seed,
LongUnaryOperator f) Возвращает бесконечный последовательный упорядоченный |
PrimitiveIterator.OfLong |
iterator() Возвращает итератор для элементов этого потока. |
LongStream |
limit(long maxSize) Возвращает поток, содержащий элементы этого потока, укороченные до максимальной длины |
LongStream |
map(LongUnaryOperator mapper) Возвращает поток, содержащий результаты применения данной функции к элементам этого потока. |
DoubleStream |
mapToDouble(LongToDoubleFunction mapper) Возвращает |
IntStream |
mapToInt(LongToIntFunction mapper) Возвращает |
<U> Stream<U> |
mapToObj(LongFunction<? extends U> mapper) Возвращает объект-значения |
OptionalLong |
max() Возвращает |
OptionalLong |
min() Возвращает |
boolean |
noneMatch(LongPredicate predicate) Возвращает true, если ни один элемент этого потока не соответствует предоставленному предикату. |
static LongStream |
of(long... values) Возвращает последовательный упорядоченный поток, содержащий указанные значения. |
static LongStream |
of(long t) Возвращает последовательный |
LongStream |
parallel() Возвращает эквивалентный поток, который является параллельным. |
LongStream |
peek(LongConsumer action) Возвращает поток, содержащий элементы этого потока, дополнительно выполняющий указанное действие над каждым элементом по мере потребления элементов из результирующего потока. |
static LongStream |
range(long startInclusive,
long endExclusive) Возвращает последовательный упорядоченный |
static LongStream |
rangeClosed(long startInclusive,
long endInclusive) Возвращает последовательный упорядоченный |
OptionalLong |
reduce(LongBinaryOperator op) Выполняет сокращение над элементами этого потока, используя ассоциативную функцию накопления, и возвращает |
long |
reduce(long identity,
LongBinaryOperator op) Выполняет сокращение над элементами этого потока, используя заданное начальное значение и ассоциативную функцию накопления, и возвращает значение сокращения. |
LongStream |
sequential() Возвращает эквивалентный поток, который является последовательным. |
LongStream |
skip(long n) Возвращает поток, содержащий оставшиеся элементы этого потока после отбрасывания первых |
LongStream |
sorted() Возвращает поток, содержащий элементы этого потока в отсортированном порядке. |
Spliterator.OfLong |
spliterator() Возвращает разделитель для элементов этого потока. |
long |
sum() Возвращает сумму элементов в этом потоке. |
LongSummaryStatistics |
summaryStatistics() Возвращает |
long[] |
toArray() Возвращает массив, содержащий элементы этого потока. |
Методы, унаследованные от интерфейса java.util.stream.BaseStream
close, isParallel, onClose, unordered Методы
filter
LongStream filter(LongPredicate predicate)
Возвращает поток, содержащий элементы этого потока, соответствующие заданному предикату.
- Параметры:
-
predicate- предикат невмешивающийся и бессостоятельный, применяемый к каждому элементу для определения, должен ли он быть включён - Возвращает:
- новый поток
map
LongStream map(LongUnaryOperator mapper)
Возвращает поток, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- невмешивающаяся и бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToObj
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Возвращает поток с объектами Stream, состоящий из результатов применения заданной функции к элементам этого потока.
- Параметры типа:
-
U- тип элемента нового потока - Параметры:
-
mapper- не вмешивающаяся, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToInt
IntStream mapToInt(LongToIntFunction mapper)
Возвращает поток IntStream, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- не вмешивающаяся, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
mapToDouble
DoubleStream mapToDouble(LongToDoubleFunction mapper)
Возвращает поток DoubleStream, содержащий результаты применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- не вмешивающаяся, бессостоятельная функция, применяемая к каждому элементу - Возвращает:
- новый поток
flatMap
LongStream flatMap(LongFunction<? extends LongStream> mapper)
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым сопоставленного потока, полученного путём применения заданной функции отображения к каждому элементу. Каждый сопоставленный поток closed после того, как его содержимое было помещено в этот поток. (Если сопоставленный поток null, используется пустой поток.)
- Параметры:
-
mapper- не вмешивающаяся, бессостоятельная функция, применяемая к каждому элементу, которая создаётLongStreamновых значений - Возвращает:
- новый поток
- См. также:
Stream.flatMap(Function)
distinct
LongStream distinct()
Возвращает поток, содержащий уникальные элементы этого потока.
- Возвращает:
- новый поток
sorted
LongStream sorted()
Возвращает поток, содержащий элементы этого потока в отсортированном порядке.
- Возвращает:
- новый поток
peek
LongStream peek(LongConsumer action)
Возвращает поток, содержащий элементы этого потока, дополнительно выполняющий указанное действие над каждым элементом по мере потребления элементов из результирующего потока.
Для параллельных потоковых конвейеров действие может быть вызвано в любое время и в любом потоке, в котором элемент становится доступным от операцией предшествующего уровня. Если действие изменяет общее состояние, оно должно обеспечить необходимую синхронизацию.
- Примечание API:
- Этот метод существует в основном для отладки, где вы хотите увидеть элементы, поскольку они проходят определённую точку в конвейере:
LongStream.of(1, 2, 3, 4) .filter(e -> e > 2) .peek(e -> System.out.println("Filtered value: " + e)) .map(e -> e * e) .peek(e -> System.out.println("Mapped value: " + e)) .sum(); - Параметры:
-
action- не вмешивающееся действие, выполняемое над элементами по мере их потребления из потока - Возвращает:
- новый поток
limit
LongStream limit(long maxSize)
Возвращает поток, содержащий элементы этого потока, усечённые до длины не более maxSize.
- Примечание API:
- Хотя
limit()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийmaxSize, так какlimit(n)ограничен возвращением не просто любых n элементов, а первых n элементов в порядке их появления. Использование неупорядоченного источника потока (например,generate(LongSupplier)) или удаление ограничения на порядок с помощьюBaseStream.unordered()может привести к значительному ускорениюlimit()в параллельных конвейерах, если семантика вашей ситуации это допускает. Если требуется согласованность с порядком появления, и вы сталкиваетесь с плохой производительностью или использованием памяти сlimit()в параллельных конвейерах, переключение на последовательное выполнение с помощьюsequential()может улучшить производительность. - Параметры:
-
maxSize- количество элементов, до которого должен быть ограничен поток - Возвращает:
- новый поток
- Исключение:
-
IllegalArgumentException- еслиmaxSizeотрицательно
skip
LongStream skip(long n)
Возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания первых n элементов потока. Если в этом потоке меньше n элементов, то будет возвращен пустой поток.
- Примечание API:
- Хотя
skip()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийn, так какskip(n)ограничен пропусканием не просто любых n элементов, а первых n элементов в порядке их появления. Использование неупорядоченного источника потока (например,generate(LongSupplier)) или удаление ограничения на порядок с помощьюBaseStream.unordered()может привести к значительному ускорениюskip()в параллельных конвейерах, если семантика вашей ситуации это допускает. Если требуется согласованность с порядком появления, и вы сталкиваетесь с плохой производительностью или использованием памяти сskip()в параллельных конвейерах, переключение на последовательное выполнение с помощьюsequential()может улучшить производительность. - Параметры:
-
n- количество ведущих элементов для пропуска - Возвращает:
- новый поток
- Исключение:
-
IllegalArgumentException- еслиnотрицательно
forEach
void forEach(LongConsumer action)
Выполняет действие над каждым элементом этого потока.
Это конечная операция.
Для параллельных потоковых конвейеров эта операция не гарантирует соблюдение порядка появления элементов в потоке, так как это бы пожертвовало преимуществами параллелизма. Для любого данного элемента действие может быть выполнено в любое время и в любом потоке, который выберет библиотека. Если действие обращается к общему состоянию, оно должно обеспечить необходимую синхронизацию.
- Параметры:
-
action- не вмешивающееся действие, выполняемое над элементами
forEachOrdered
void forEachOrdered(LongConsumer action)
Выполняет действие над каждым элементом этого потока, гарантируя, что каждый элемент обрабатывается в порядке появления для потоков, имеющих определенный порядок появления.
Это конечная операция.
- Параметры:
-
action- не вмешивающееся действие, выполняемое над элементами - См. также:
forEach(LongConsumer)
toArray
long[] toArray()
Возвращает массив, содержащий элементы этого потока.
Это конечная операция.
- Возвращает:
- массив, содержащий элементы этого потока
reduce
long reduce(long identity,
LongBinaryOperator op) Выполняет редукцию над элементами этого потока, используя предоставленное значение идентичности и ассоциативную функцию накопления и возвращает результирующее значение. Это эквивалентно:
long result = identity;
for (long element : this stream)
result = accumulator.applyAsLong(result, element)
return result; , но не ограничено выполнением последовательно.
Значение identity должно быть идентичностью для функции накопления. Это означает, что для всех x, accumulator.apply(identity, x) равно x. Функция accumulator должна быть ассоциативной функцией.
Это конечная операция.
- Примечание API:
- Sum, min, max и average — это все частные случаи сокращения. Суммирование потока чисел может быть выражено как:
long sum = integers.reduce(0, (a, b) -> a+b);
или более компактно:long sum = integers.reduce(0, Long::sum);
Хотя это может показаться более окольным путем выполнения агрегации по сравнению с простой мутацией текущей суммы в цикле, операции сокращения более эффективно распараллеливаются, без необходимости дополнительной синхронизации и с значительно меньшим риском гонок данных.
- Параметры:
-
identity— значение тождества для накапливающей функции -
op— ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений - Возвращаемое значение:
- результат сокращения
- См. также:
-
sum(),min(),max(),average()
reduce
OptionalLong reduce(LongBinaryOperator op)
Выполняет сокращение элементов этого потока, используя ассоциативную функцию накопления, и возвращает Optional, описывающий полученное значение, если оно есть. Это эквивалентно:
boolean foundAny = false;
long result = null;
for (long element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsLong(result, element);
}
return foundAny ? OptionalLong.of(result) : OptionalLong.empty(); , но не ограничено последовательным выполнением.
Функция accumulator должна быть ассоциативной.
- Параметры:
-
op— ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений - Возвращаемое значение:
- результат сокращения
- См. также:
reduce(long, LongBinaryOperator)
collect
<R> R collect(Supplier<R> supplier,
ObjLongConsumer<R> accumulator,
BiConsumer<R,R> combiner) Выполняет операцию мутабельного сокращения над элементами этого потока. Мутабельное сокращение — это сокращение, при котором результирующее значение является контейнером изменяемого результата, например, ArrayList, а элементы включаются путем обновления состояния результата, а не заменой результата. Это дает результат, эквивалентный:
R result = supplier.get();
for (long element : this stream)
accumulator.accept(result, element);
return result;
Как и reduce(long, LongBinaryOperator), операции collect могут быть распараллелены без необходимости дополнительной синхронизации.
- Тип параметров:
-
R— тип результата - Параметры:
-
supplier— функция, создающая новый контейнер результата. При параллельном выполнении эта функция может вызываться несколько раз и должна возвращать новое значение каждый раз. -
accumulator— ассоциативная, не влияющая на состояние, бессостоятельная функция для включения дополнительного элемента в результат -
combiner— ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений, которая должна быть совместима с функцией накопления - Возвращаемое значение:
- результат сокращения
- См. также:
Stream.collect(Supplier, BiConsumer, BiConsumer)
sum
long sum()
Возвращает сумму элементов в этом потоке. Это частный случай сокращения и эквивалентно:
return reduce(0, Long::sum);
- Возвращаемое значение:
- сумма элементов в этом потоке
min
OptionalLong min()
Возвращает Optional, описывающий минимальный элемент этого потока, или пустой Optional, если этот поток пуст. Это частный случай сокращения и эквивалентно:
return reduce(Long::min);
- Возвращаемое значение:
- Optional, содержащий минимальный элемент этого потока, или пустой Optional, если поток пустой
max
OptionalLong max()
Возвращает Optional, описывающий максимальный элемент этого потока, или пустой Optional, если этот поток пуст. Это частный случай сокращения и эквивалентно:
return reduce(Long::max);
- Возвращаемое значение:
- Optional, содержащий максимальный элемент этого потока, или пустой Optional, если поток пустой
count
long count()
Возвращает количество элементов в этом потоке. Это частный случай сокращения и эквивалентно:
return map(e -> 1L).sum();
- Возвращаемое значение:
- количество элементов в этом потоке
average
OptionalDouble average()
Возвращает Optional, описывающий среднее арифметическое элементов этого потока, или пустой Optional, если этот поток пуст. Это частный случай сокращения.
- Возвращаемое значение:
- Optional, содержащий среднее значение элементов этого потока, или пустой Optional, если поток пуст
summaryStatistics
LongSummaryStatistics summaryStatistics()
Возвращает SummaryStatistics, описывающую различные сводные данные об элементах этого потока. Это частный случай сокращения.
- Возвращаемое значение:
- SummaryStatistics, описывающая различные сводные данные об элементах этого потока
anyMatch
boolean anyMatch(LongPredicate predicate)
Возвращает значение true, если хотя бы один элемент этого потока удовлетворяет заданному предикату. Может не оценивать предикат для всех элементов, если этого не требуется для определения результата. Если поток пуст, то возвращается false и предикат не оценивается.
- Примечание API:
- Этот метод оценивает экзистенциальное квантификацию предиката над элементами потока (для некоторого x P(x)).
- Параметры:
-
predicate— не влияющий на состояние, бессостоятельный предикат, применяемый к элементам этого потока - Возвращаемое значение:
- true, если хотя бы один элемент потока удовлетворяет заданному предикату, в противном случае false
allMatch
boolean allMatch(LongPredicate predicate)
Возвращает значение true, если все элементы этого потока удовлетворяют заданному предикату. Может не оценивать предикат для всех элементов, если этого не требуется для определения результата. Если поток пуст, то возвращается true и предикат не оценивается.
- Примечание API:
- Этот метод оценивает универсальное квантификацию предиката над элементами потока (для всех x P(x)). Если поток пуст, то квантификация считается пусто выполнимой и всегда возвращает true (независимо от P(x)).
- Параметры:
-
predicate— не влияющий на состояние, бессостоятельный предикат, применяемый к элементам этого потока - Возвращаемое значение:
- true, если все элементы потока удовлетворяют заданному предикату или поток пуст, в противном случае false
noneMatch
boolean noneMatch(LongPredicate predicate)
Возвращает значение true, если ни один элемент этого потока не удовлетворяет заданному предикату. Может не оценивать предикат для всех элементов, если этого не требуется для определения результата. Если поток пуст, то возвращается true и предикат не оценивается.
- Примечание API:
- Этот метод оценивает универсальное квантификацию отрицания предиката над элементами потока (для всех x ~P(x)). Если поток пуст, то квантификация считается пусто выполнимой и всегда возвращает true, независимо от P(x).
- Параметры:
-
predicate— не влияющий на состояние, бессостоятельный предикат, применяемый к элементам этого потока - Возвращаемое значение:
- true, если ни один элемент потока не удовлетворяет заданному предикату или поток пуст, в противном случае false
findFirst
OptionalLong findFirst()
Возвращает Optional, описывающий первый элемент этого потока, или пустой Optional, если поток пуст. Если у потока нет порядка встречи, то может быть возвращен любой элемент.
- Возвращаемое значение:
- Optional, описывающий первый элемент этого потока, или пустой Optional, если поток пуст
findAny
OptionalLong findAny()
Возвращает OptionalLong, описывающую какой-то элемент потока, или пустой OptionalLong если поток пуст.
Это короткое терминальное действие.
Поведение этой операции явно не детерминировано; она свободна выбрать любой элемент в потоке. Это необходимо для максимальной производительности в параллельных операциях; недостатком является то, что несколько вызовов для одного и того же источника могут не возвращать одинаковый результат. (Если желаемый результат стабилен, используйте findFirst() вместо этого.)
- Возвращает:
OptionalLong, описывающую какой-то элемент этого потока, или пустойOptionalLong, если поток пуст- См. также:
findFirst()
asDoubleStream
DoubleStream asDoubleStream()
Возвращает DoubleStream , состоящий из элементов этого потока, преобразованных в double.
- Возвращает:
DoubleStream, состоящий из элементов этого потока, преобразованных вdouble
boxed
Stream<Long> boxed()
Возвращает Stream , состоящий из элементов этого потока, каждый из которых упакован в Long.
- Возвращает:
Streamсостоящий из элементов этого потока, каждый из которых упакован вLong
sequential
LongStream sequential()
Описание скопировано из интерфейса: BaseStream
Возвращает эквивалентный поток, который является последовательным. Может вернуть себя, либо потому, что поток уже был последовательным, либо потому, что состояние основного потока было изменено на последовательное.
- Указано в:
-
sequentialв интерфейсеBaseStream<Long,LongStream> - Возвращает:
- последовательный поток
parallel
LongStream parallel()
Описание скопировано из интерфейса: BaseStream
Возвращает эквивалентный поток, который является параллельным. Может вернуть себя, либо потому, что поток уже был параллельным, либо потому, что состояние основного потока было изменено на параллельное.
- Указано в:
-
parallelв интерфейсеBaseStream<Long,LongStream> - Возвращает:
- параллельный поток
iterator
PrimitiveIterator.OfLong iterator()
Описание скопировано из интерфейса: BaseStream
Возвращает итератор для элементов этого потока.
- Указано в:
-
iteratorв интерфейсеBaseStream<Long,LongStream> - Возвращает:
- итератор элементов для этого потока
spliterator
Spliterator.OfLong spliterator()
Описание скопировано из интерфейса: BaseStream
Возвращает разделитель для элементов этого потока.
- Указано в:
-
spliteratorв интерфейсеBaseStream<Long,LongStream> - Возвращает:
- разделитель элементов для этого потока
builder
static LongStream.Builder builder()
Возвращает сборщик для LongStream.
- Возвращает:
- сборщик потока
empty
static LongStream empty()
Возвращает пустой последовательный LongStream.
- Возвращает:
- пустой последовательный поток
of
static LongStream of(long t)
Возвращает последовательный LongStream , содержащий один элемент.
- Параметры:
-
t- единственный элемент - Возвращает:
- последовательный поток-синглтон
of
static LongStream of(long... values)
Возвращает упорядоченный последовательный поток, элементами которого являются указанные значения.
- Параметры:
-
values- элементы нового потока - Возвращает:
- новый поток
iterate
static LongStream iterate(long seed,
LongUnaryOperator f) Возвращает бесконечный упорядоченный последовательный LongStream , полученный путем итеративного применения функции f к начальному элементу seed, создавая Stream , состоящий из seed, f(seed), f(f(seed)) и т. д.
Первый элемент (позиция 0) в LongStream будет предоставленным seed. Для n > 0, элемент на позиции n, будет результатом применения функции f к элементу на позиции n - 1.
- Параметры:
-
seed- начальный элемент -
f- функция, применяемая к предыдущему элементу для получения нового элемента - Возвращает:
- новый последовательный
LongStream
generate
static LongStream generate(LongSupplier s)
Возвращает бесконечный неупорядоченный последовательный поток, где каждый элемент генерируется предоставленным LongSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т. д.
- Параметры:
-
s-LongSupplierдля сгенерированных элементов - Возвращает:
- новый бесконечный неупорядоченный последовательный
LongStream
range
static LongStream range(long startInclusive,
long endExclusive) Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endExclusive (исключительно) с шагом увеличения 1.
- Примечание API:
-
Эквивалентную последовательность возрастающих значений можно получить последовательно с помощью цикла
forследующим образом:for (long i = startInclusive; i < endExclusive ; i++) { ... } - Параметры:
-
startInclusive- начальное значение (включительно) -
endExclusive- верхняя граница (исключительно) - Возвращает:
- последовательный
LongStreamдля диапазонаlongэлементов
rangeClosed
static LongStream rangeClosed(long startInclusive,
long endInclusive) Возвращает упорядоченный последовательный LongStream от startInclusive (включительно) до endInclusive (включительно) с шагом увеличения 1.
- Примечание API:
-
Эквивалентную последовательность возрастающих значений можно получить последовательно с помощью цикла
forследующим образом:for (long i = startInclusive; i <= endInclusive ; i++) { ... } - Параметры:
-
startInclusive- начальное значение (включительно) -
endInclusive- верхняя граница (включительно) - Возвращает:
- последовательный
LongStreamдля диапазонаlongэлементов
concat
static LongStream concat(LongStream a,
LongStream b) Создает лениво конкатенированный поток, элементами которого являются все элементы первого потока, за которыми следуют все элементы второго потока. Результирующий поток упорядочен, если оба входных потока упорядочены, и параллелен, если любой из входных потоков является параллельным. При закрытии результирующего потока вызываются обработчики закрытия для обоих входных потоков.
- Примечание реализации:
- Следует проявлять осторожность при конструировании потоков из многократных конкатенаций. Доступ к элементу глубоко конкатенированного потока может привести к глубоким цепочкам вызовов или даже к
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.