public interface LongStream
implements BaseStream<Long, LongStream>
java.util.stream.LongStream |
一系列支持顺序和并行聚合操作的原始长值元素。 这是long
原始专业化Stream
。
以下示例说明了使用 Stream
和 LongStream
进行的聚合操作,计算红色小部件的权重总和:
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum();
See the class documentation for
Stream
and the package documentation for
java.util.stream for additional specification of streams, stream operations, stream pipelines, and parallelism.
也可以看看:
Nested classes |
|
---|---|
interface |
LongStream.Builder |
Public methods |
|
---|---|
abstract boolean |
allMatch(LongPredicate predicate) 返回此流的所有元素是否与提供的谓词匹配。 |
abstract boolean |
anyMatch(LongPredicate predicate) 返回此流的任何元素是否与提供的谓词匹配。 |
abstract DoubleStream |
asDoubleStream() 返回由该流的元素组成的 |
abstract OptionalDouble |
average() 返回描述此流的元素的算术平均值的 |
abstract Stream<Long> |
boxed() 返回由此流的元素组成的 |
static LongStream.Builder |
builder() 返回 |
abstract <R> R |
collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R, R> combiner) 对此流的元素执行 mutable reduction操作。 |
static LongStream |
concat(LongStream a, LongStream b) 创建一个延迟连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。 |
abstract long |
count() 返回此流中元素的数量。 |
abstract LongStream |
distinct() 返回由此流的不同元素组成的流。 |
static LongStream |
empty() 返回一个空的顺序 |
abstract LongStream |
filter(LongPredicate predicate) 返回包含此流中与给定谓词相匹配的元素的流。 |
abstract OptionalLong |
findAny() 返回描述流的某个元素的 |
abstract OptionalLong |
findFirst() 返回 |
abstract LongStream |
flatMap(LongFunction<? extends LongStream> mapper) 返回一个流,该流包含将此流的每个元素替换为通过将所提供的映射函数应用于每个元素而生成的映射流的内容的结果。 |
abstract void |
forEach(LongConsumer action) 为此流的每个元素执行操作。 |
abstract void |
forEachOrdered(LongConsumer action) 对此流的每个元素执行一个操作,保证每个元素都按遇到顺序处理,以获得具有已定义的遇到顺序的流。 |
static LongStream |
generate(LongSupplier s) 返回无限顺序无序流,其中每个元素由提供的 |
static LongStream |
iterate(long seed, LongUnaryOperator f) 返回有序无限连续 |
abstract PrimitiveIterator.OfLong |
iterator() 返回此流的元素的迭代器。 |
abstract LongStream |
limit(long maxSize) 返回由该流的元素组成的流,截断长度不超过 |
abstract LongStream |
map(LongUnaryOperator mapper) 返回由将给定函数应用于此流的元素的结果组成的流。 |
abstract DoubleStream |
mapToDouble(LongToDoubleFunction mapper) 返回一个 |
abstract IntStream |
mapToInt(LongToIntFunction mapper) 返回一个 |
abstract <U> Stream<U> |
mapToObj(LongFunction<? extends U> mapper) 返回一个对象值 |
abstract OptionalLong |
max() 返回描述此流的最大元素的 |
abstract OptionalLong |
min() 返回描述此流的最小元素的 |
abstract boolean |
noneMatch(LongPredicate predicate) 返回此流的元素是否与提供的谓词匹配。 |
static LongStream |
of(long... values) 返回顺序排列的流,其元素是指定的值。 |
static LongStream |
of(long t) 返回包含单个元素的顺序 |
abstract LongStream |
parallel() 返回平行的等效流。 |
abstract LongStream |
peek(LongConsumer action) 返回由该流的元素组成的流,并在元素从结果流中消耗时另外对每个元素执行提供的操作。 |
static LongStream |
range(long startInclusive, long endExclusive) 返回从 |
static LongStream |
rangeClosed(long startInclusive, long endInclusive) 返回从 |
abstract OptionalLong |
reduce(LongBinaryOperator op) 使用 associative累加函数对此流的元素执行 reduction ,并返回描述缩减值的 |
abstract long |
reduce(long identity, LongBinaryOperator op) 对此流的元素执行 reduction ,使用提供的标识值和 associative累加函数,并返回缩小的值。 |
abstract LongStream |
sequential() 返回顺序的等效流。 |
abstract LongStream |
skip(long n) 在丢弃流的第一个 |
abstract LongStream |
sorted() 以排序顺序返回由此流的元素组成的流。 |
abstract Spliterator.OfLong |
spliterator() 返回此流的元素的分割器。 |
abstract long |
sum() 返回此流中元素的总和。 |
abstract LongSummaryStatistics |
summaryStatistics() 返回描述有关此流元素的各种摘要数据的 |
abstract long[] |
toArray() 返回包含此流的元素的数组。 |
Inherited methods |
|
---|---|
From interface java.util.stream.BaseStream
|
|
From interface java.lang.AutoCloseable
|
boolean allMatch (LongPredicate predicate)
返回此流的所有元素是否与提供的谓词匹配。 如果不需要确定结果,则不能评估所有元素的谓词。 如果该流为空,则返回true
,并且不评估谓词。
这是一个 short-circuiting terminal operation 。
true
(regardless of P(x)).Parameters | |
---|---|
predicate |
LongPredicate : a non-interfering, stateless predicate to apply to elements of this stream |
Returns | |
---|---|
boolean |
true if either all elements of the stream match the provided predicate or the stream is empty, otherwise false |
boolean anyMatch (LongPredicate predicate)
返回此流的任何元素是否与提供的谓词匹配。 如果不需要确定结果,则不能评估所有元素的谓词。 如果该流为空,则返回false
,并且不评估谓词。
这是一个 short-circuiting terminal operation 。
Parameters | |
---|---|
predicate |
LongPredicate : a non-interfering, stateless predicate to apply to elements of this stream |
Returns | |
---|---|
boolean |
true if any elements of the stream match the provided predicate, otherwise false |
DoubleStream asDoubleStream ()
返回由该流的元素组成的 DoubleStream
,转换为 double
。
这是一个 intermediate operation 。
Returns | |
---|---|
DoubleStream |
a DoubleStream consisting of the elements of this stream, converted to double |
OptionalDouble average ()
返回描述该流元素的算术平均值的OptionalDouble
,或者如果此流为空,则返回一个空的可选元素。 这是一个特例reduction 。
这是一个 terminal operation 。
Returns | |
---|---|
OptionalDouble |
an OptionalDouble containing the average element of this stream, or an empty optional if the stream is empty |
Stream<Long> boxed ()
返回由此流的元素组成的 Stream
,每个元素装箱到 Long
。
这是一个 intermediate operation 。
Returns | |
---|---|
Stream<Long> |
a Stream consistent of the elements of this stream, each boxed to Long |
LongStream.Builder builder ()
返回 LongStream
的构建器。
Returns | |
---|---|
LongStream.Builder |
a stream builder |
R collect (Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R, R> combiner)
对此流的元素执行mutable reduction操作。 可变的约简是减少的值是一个可变的结果容器,例如ArrayList
,并且通过更新结果的状态而不是通过替换结果来结合元素。 这产生的结果等同于:
R result = supplier.get();
for (long element : this stream)
accumulator.accept(result, element);
return result;
与 reduce(long, LongBinaryOperator)
一样, collect
操作可以并行化而不需要额外的同步。
这是一个 terminal operation 。
Parameters | |
---|---|
supplier |
Supplier : a function that creates a new result container. For a parallel execution, this function may be called multiple times and must return a fresh value each time. |
accumulator |
ObjLongConsumer : an associative, non-interfering, stateless function for incorporating an additional element into a result |
combiner |
BiConsumer : an associative, non-interfering, stateless function for combining two values, which must be compatible with the accumulator function |
Returns | |
---|---|
R |
the result of the reduction |
LongStream concat (LongStream a, LongStream b)
创建一个延迟连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。 如果两个输入流都是有序的,则生成的流是有序的,如果任意一个输入流是并行的,则生成流。 当结果流关闭时,调用两个输入流的关闭处理程序。
StackOverflowException
.Parameters | |
---|---|
a |
LongStream : the first stream |
b |
LongStream : the second stream |
Returns | |
---|---|
LongStream |
the concatenation of the two input streams |
long count ()
返回此流中元素的数量。 这是一个reduction的特例 ,相当于:
return map(e -> 1L).sum();
这是一个 terminal operation 。
Returns | |
---|---|
long |
the count of elements in this stream |
LongStream distinct ()
返回由此流的不同元素组成的流。
这是一个 stateful intermediate operation 。
Returns | |
---|---|
LongStream |
the new stream |
LongStream empty ()
返回一个空的顺序 LongStream
。
Returns | |
---|---|
LongStream |
an empty sequential stream |
LongStream filter (LongPredicate predicate)
返回包含此流中与给定谓词相匹配的元素的流。
这是一个 intermediate operation 。
Parameters | |
---|---|
predicate |
LongPredicate : a non-interfering, stateless predicate to apply to each element to determine if it should be included |
Returns | |
---|---|
LongStream |
the new stream |
OptionalLong findAny ()
返回描述流的某个元素的 OptionalLong
,或者如果流为空,则返回空 OptionalLong
。
这是一个 short-circuiting terminal operation 。
这种操作的行为显然是不确定的; 它可以自由选择流中的任何元素。 这是为了在并行操作中实现最高性能; 成本是在同一个源上的多个调用可能不会返回相同的结果。 (如果需要稳定的结果, findFirst()
改为使用findFirst()
)
Returns | |
---|---|
OptionalLong |
an OptionalLong describing some element of this stream, or an empty OptionalLong if the stream is empty |
也可以看看:
OptionalLong findFirst ()
返回OptionalLong
描述此流的第一个元素,或空OptionalLong
如果流是空的。 如果该流没有遇到命令,则可以返回任何元素。
这是一个 short-circuiting terminal operation 。
Returns | |
---|---|
OptionalLong |
an OptionalLong describing the first element of this stream, or an empty OptionalLong if the stream is empty |
LongStream flatMap (LongFunction<? extends LongStream> mapper)
返回一个流,该流包含将此流的每个元素替换为通过将所提供的映射函数应用于每个元素而生成的映射流的内容的结果。 将其内容放入此流后,每个映射流都是closed
。 (如果映射流是null
,则使用空流而不是。)
这是一个 intermediate operation 。
Parameters | |
---|---|
mapper |
LongFunction : a non-interfering, stateless function to apply to each element which produces a LongStream of new values |
Returns | |
---|---|
LongStream |
the new stream |
也可以看看:
void forEach (LongConsumer action)
为此流的每个元素执行操作。
这是一个 terminal operation 。
对于并行流管道,此操作并不保证尊重流的相遇顺序,因为这样做会牺牲并行的利益。 对于任何给定的元素,该动作可以在任何时间和库中选择的任何线程中执行。 如果操作访问共享状态,它负责提供所需的同步。
Parameters | |
---|---|
action |
LongConsumer : a non-interfering action to perform on the elements |
void forEachOrdered (LongConsumer action)
对此流的每个元素执行一个操作,保证每个元素都按遇到顺序处理,以获得具有已定义的遇到顺序的流。
这是一个 terminal operation 。
Parameters | |
---|---|
action |
LongConsumer : a non-interfering action to perform on the elements |
也可以看看:
LongStream generate (LongSupplier s)
返回无限顺序无序流,其中每个元素由提供的LongSupplier
生成。 这适用于生成恒定流,随机元素流等。
Parameters | |
---|---|
s |
LongSupplier : the LongSupplier for generated elements |
Returns | |
---|---|
LongStream |
a new infinite sequential unordered LongStream |
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
上的元素的n - 1
。
Parameters | |
---|---|
seed |
long : the initial element |
f |
LongUnaryOperator : a function to be applied to to the previous element to produce a new element |
Returns | |
---|---|
LongStream |
a new sequential LongStream |
PrimitiveIterator.OfLong iterator ()
返回此流的元素的迭代器。
这是一个 terminal operation 。
Returns | |
---|---|
PrimitiveIterator.OfLong |
the element iterator for this stream |
LongStream limit (long maxSize)
返回由该流的元素组成的流,截断长度不超过 maxSize
。
这是一个 short-circuiting stateful intermediate operation 。
limit()
is generally a cheap operation on sequential stream pipelines, it can be quite expensive on ordered parallel pipelines, especially for large values of maxSize
, since limit(n)
is constrained to return not just any n elements, but the first n elements in the encounter order. Using an unordered stream source (such as generate(LongSupplier)
) or removing the ordering constraint with unordered()
may result in significant speedups of limit()
in parallel pipelines, if the semantics of your situation permit. If consistency with encounter order is required, and you are experiencing poor performance or memory utilization with limit()
in parallel pipelines, switching to sequential execution with sequential()
may improve performance.Parameters | |
---|---|
maxSize |
long : the number of elements the stream should be limited to |
Returns | |
---|---|
LongStream |
the new stream |
Throws | |
---|---|
IllegalArgumentException |
if maxSize is negative |
LongStream map (LongUnaryOperator mapper)
返回由将给定函数应用于此流的元素的结果组成的流。
这是一个 intermediate operation 。
Parameters | |
---|---|
mapper |
LongUnaryOperator : a non-interfering, stateless function to apply to each element |
Returns | |
---|---|
LongStream |
the new stream |
DoubleStream mapToDouble (LongToDoubleFunction mapper)
返回一个 DoubleStream
其中包含将给定函数应用于此流的元素的结果。
这是一个 intermediate operation 。
Parameters | |
---|---|
mapper |
LongToDoubleFunction : a non-interfering, stateless function to apply to each element |
Returns | |
---|---|
DoubleStream |
the new stream |
IntStream mapToInt (LongToIntFunction mapper)
返回一个 IntStream
其中包含将给定函数应用于此流的元素的结果。
这是一个 intermediate operation 。
Parameters | |
---|---|
mapper |
LongToIntFunction : a non-interfering, stateless function to apply to each element |
Returns | |
---|---|
IntStream |
the new stream |
Stream<U> mapToObj (LongFunction<? extends U> mapper)
返回一个对象值 Stream
,该值包含将给定函数应用于此流的元素的结果。
这是一个 intermediate operation 。
Parameters | |
---|---|
mapper |
LongFunction : a non-interfering, stateless function to apply to each element |
Returns | |
---|---|
Stream<U> |
the new stream |
OptionalLong max ()
返回描述此流的最大元素的OptionalLong
,或者如果此流为空,则返回一个空的可选项。 这是reduction的特例 ,相当于:
return reduce(Long::max);
这是一个 terminal operation 。
Returns | |
---|---|
OptionalLong |
an OptionalLong containing the maximum element of this stream, or an empty OptionalLong if the stream is empty |
OptionalLong min ()
返回描述此流的最小元素的OptionalLong
,或者如果此流为空,则返回一个空的可选元素。 这是reduction的特例 ,相当于:
return reduce(Long::min);
这是一个 terminal operation 。
Returns | |
---|---|
OptionalLong |
an OptionalLong containing the minimum element of this stream, or an empty OptionalLong if the stream is empty |
boolean noneMatch (LongPredicate predicate)
返回此流的元素是否与提供的谓词匹配。 如果不需要确定结果,则不能评估所有元素的谓词。 如果该流为空,则返回true
,并且不评估谓词。
这是一个 short-circuiting terminal operation 。
true
, regardless of P(x).Parameters | |
---|---|
predicate |
LongPredicate : a non-interfering, stateless predicate to apply to elements of this stream |
Returns | |
---|---|
boolean |
true if either no elements of the stream match the provided predicate or the stream is empty, otherwise false |
LongStream of (long... values)
返回顺序排列的流,其元素是指定的值。
Parameters | |
---|---|
values |
long : the elements of the new stream |
Returns | |
---|---|
LongStream |
the new stream |
LongStream of (long t)
返回包含单个元素的顺序 LongStream
。
Parameters | |
---|---|
t |
long : the single element |
Returns | |
---|---|
LongStream |
a singleton sequential stream |
LongStream parallel ()
返回平行的等效流。 可能会返回自己,因为流已经是平行的,或者因为基础流状态被修改为平行。
这是一个 intermediate operation 。
Returns | |
---|---|
LongStream |
a parallel stream |
LongStream peek (LongConsumer action)
返回由该流的元素组成的流,并在元素从结果流中消耗时另外对每个元素执行提供的操作。
这是一个 intermediate operation 。
对于并行流管线,可以随时调用该操作,并且可以在任何线程中通过上游操作使该元素可用。 如果该操作修改共享状态,则它负责提供所需的同步。
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();
Parameters | |
---|---|
action |
LongConsumer : a non-interfering action to perform on the elements as they are consumed from the stream |
Returns | |
---|---|
LongStream |
the new stream |
LongStream range (long startInclusive, long endExclusive)
返回从 startInclusive
(含)至 endExclusive
(不包括)的连续排序 LongStream
,增量为 1
。
可以使用 for
循环按顺序产生递增值的等效序列,如下所示:
for (long i = startInclusive; i < endExclusive ; i++) { ... }
Parameters | |
---|---|
startInclusive |
long : the (inclusive) initial value |
endExclusive |
long : the exclusive upper bound |
Returns | |
---|---|
LongStream |
a sequential LongStream for the range of long elements |
LongStream rangeClosed (long startInclusive, long endInclusive)
返回从 startInclusive
(含)至 endInclusive
(含)的连续排序 LongStream
,增量为 1
。
可以使用 for
循环按顺序产生递增值的等效序列,如下所示:
for (long i = startInclusive; i <= endInclusive ; i++) { ... }
Parameters | |
---|---|
startInclusive |
long : the (inclusive) initial value |
endInclusive |
long : the inclusive upper bound |
Returns | |
---|---|
LongStream |
a sequential LongStream for the range of long elements |
OptionalLong reduce (LongBinaryOperator op)
使用associative累加函数对此流的元素执行reduction ,并返回描述减小值的OptionalLong
(如果有)。 这相当于:
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();
but is not constrained to execute sequentially.
accumulator
函数必须是 associative函数。
这是一个 terminal operation 。
Parameters | |
---|---|
op |
LongBinaryOperator : an associative, non-interfering, stateless function for combining two values |
Returns | |
---|---|
OptionalLong |
the result of the reduction |
long reduce (long identity, LongBinaryOperator op)
对此流的元素执行reduction ,使用提供的标识值和associative累加函数,并返回缩小的值。 这相当于:
long result = identity;
for (long element : this stream)
result = accumulator.applyAsLong(result, element)
return result;
but is not constrained to execute sequentially.
identity
值必须是累加器函数的标识。 这意味着,对于所有x
, accumulator.apply(identity, x)
等于x
。 accumulator
函数必须是associative函数。
这是一个 terminal operation 。
long sum = integers.reduce(0, (a, b) -> a+b);
or more compactly: long sum = integers.reduce(0, Long::sum);
虽然与简单地在循环中改变运行总数相比,这看起来可能是一种更为迂回的方式来执行聚合,但减少操作可以更加平滑地进行并行处理,而不需要额外的同步并大大降低了数据竞争的风险。
Parameters | |
---|---|
identity |
long : the identity value for the accumulating function |
op |
LongBinaryOperator : an associative, non-interfering, stateless function for combining two values |
Returns | |
---|---|
long |
the result of the reduction |
LongStream sequential ()
返回顺序的等效流。 可能会返回自己,因为流已经是顺序的,或者因为基础流状态被修改为顺序的。
这是一个 intermediate operation 。
Returns | |
---|---|
LongStream |
a sequential stream |
LongStream skip (long n)
在丢弃流的前n
元素后,返回由该流的其余元素组成的流。 如果此流包含的元素少于n
则会返回空流。
这是一个 stateful intermediate operation 。
skip()
is generally a cheap operation on sequential stream pipelines, it can be quite expensive on ordered parallel pipelines, especially for large values of n
, since skip(n)
is constrained to skip not just any n elements, but the first n elements in the encounter order. Using an unordered stream source (such as generate(LongSupplier)
) or removing the ordering constraint with unordered()
may result in significant speedups of skip()
in parallel pipelines, if the semantics of your situation permit. If consistency with encounter order is required, and you are experiencing poor performance or memory utilization with skip()
in parallel pipelines, switching to sequential execution with sequential()
may improve performance.Parameters | |
---|---|
n |
long : the number of leading elements to skip |
Returns | |
---|---|
LongStream |
the new stream |
Throws | |
---|---|
IllegalArgumentException |
if n is negative |
LongStream sorted ()
以排序顺序返回由此流的元素组成的流。
这是一个 stateful intermediate operation 。
Returns | |
---|---|
LongStream |
the new stream |
Spliterator.OfLong spliterator ()
返回此流的元素的分割器。
这是一个 terminal operation 。
Returns | |
---|---|
Spliterator.OfLong |
the element spliterator for this stream |
long sum ()
返回此流中元素的总和。 这是reduction的特例 ,相当于:
return reduce(0, Long::sum);
这是一个 terminal operation 。
Returns | |
---|---|
long |
the sum of elements in this stream |
LongSummaryStatistics summaryStatistics ()
返回描述有关此流元素的各种摘要数据的LongSummaryStatistics
。 这是一个reduction的特例 。
这是一个 terminal operation 。
Returns | |
---|---|
LongSummaryStatistics |
a LongSummaryStatistics describing various summary data about the elements of this stream |
long[] toArray ()
返回包含此流的元素的数组。
这是一个 terminal operation 。
Returns | |
---|---|
long[] |
an array containing the elements of this stream |