public interface LongStream extends BaseStream<Long,LongStream>
Stream
的
long
原始化。
下面的例子说明了如何使用Stream
和LongStream
聚合运算,计算的红色小部件的重量的总和:
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum();
看到
Stream
为流,额外的规范
java.util.stream包文档类文件流操作,流管道,和并行性。
Stream
,
java.util.stream
Modifier and Type | Interface and Description |
---|---|
static interface |
LongStream.Builder
一
LongStream 易变的建设者。
|
Modifier and Type | Method and Description |
---|---|
boolean |
allMatch(LongPredicate predicate)
返回此流中的所有元素是否匹配所提供的谓词。
|
boolean |
anyMatch(LongPredicate predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
DoubleStream |
asDoubleStream()
返回一个包含该流的元素
DoubleStream ,转换为
double 。
|
OptionalDouble |
average()
返回一个
OptionalDouble 描述此流的元素的算术平均值,或一个空如果此流是空的。
|
Stream<Long> |
boxed()
返回一个包含该流的元素
Stream ,每盒装一
Long 。
|
static LongStream.Builder |
builder()
返回一个
LongStream 生成器。
|
<R> R |
collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R,R> combiner)
执行该流的元素
mutable reduction操作。
|
static LongStream |
concat(LongStream a, LongStream b)
创建一个懒洋洋的级联流的元素的所有元素的第一流通过第二个流的元素。
|
long |
count()
返回此流中元素的计数。
|
LongStream |
distinct()
返回由该流的不同元素组成的流。
|
static LongStream |
empty()
返回一个空的顺序
LongStream 。
|
LongStream |
filter(LongPredicate predicate)
返回由该流的元素组成的流,该元素与给定的谓词匹配。
|
OptionalLong |
findAny()
返回一个
OptionalLong 描述一些流元素,或一个空的
OptionalLong 如果流是空的。
|
OptionalLong |
findFirst()
返回一个
OptionalLong 描述此流的第一个元素,或者一个空的
OptionalLong 如果流是空的。
|
LongStream |
flatMap(LongFunction<? extends LongStream> mapper)
返回由将所提供的映射函数应用到每个元素的映射流的内容替换此流的每个元素的结果的结果流。
|
void |
forEach(LongConsumer action)
对该流的每个元素执行一个动作。
|
void |
forEachOrdered(LongConsumer action)
对该流的每个元素执行一个动作,保证每个元素在遇到有定义的遇到顺序的流中处理。
|
static LongStream |
generate(LongSupplier s)
返回一个无穷序列无序流,其中每个元素是由提供
LongSupplier 生成。
|
static LongStream |
iterate(long seed, LongUnaryOperator f)
返回一个无穷序列有序
LongStream 由最初的一元
seed 函数的
f 迭代应用产生的,产生一个由
seed ,
f(seed) ,
f(f(seed))
Stream ,等。
|
PrimitiveIterator.OfLong |
iterator()
返回此流的元素的迭代器。
|
LongStream |
limit(long maxSize)
返回一个包含该流的元素流,截断长度不超过
maxSize 。
|
LongStream |
map(LongUnaryOperator mapper)
返回一个流,包括将给定函数应用到该流元素的结果。
|
DoubleStream |
mapToDouble(LongToDoubleFunction mapper)
返回一个包含应用给定的功能,该流的元素的结果
DoubleStream 。
|
IntStream |
mapToInt(LongToIntFunction mapper)
返回一个包含应用给定的功能,该流的元素的结果
IntStream 。
|
<U> Stream<U> |
mapToObj(LongFunction<? extends U> mapper)
返回一个对象的值
Stream 组成的应用给出的函数的流元素的结果。
|
OptionalLong |
max()
返回一个
OptionalLong 描述此流的最大元素,或一个空如果此流是空的。
|
OptionalLong |
min()
返回一个
OptionalLong 描述该流的最小元素,或一个空如果此流是空的。
|
boolean |
noneMatch(LongPredicate predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
static LongStream |
of(long... values)
返回一个元素为指定值的顺序排列的流。
|
static LongStream |
of(long t)
返回一个包含一个元素的顺序
LongStream 。
|
LongStream |
parallel()
返回一个并行的等效流。
|
LongStream |
peek(LongConsumer action)
返回由该流的元素组成的流,并在所提供的流中执行所提供的每个元素上的动作。
|
static LongStream |
range(long startInclusive, long endExclusive)
返回一个有序
LongStream 从
startInclusive (含)至
endExclusive (独家)由
1 增量步。
|
static LongStream |
rangeClosed(long startInclusive, long endInclusive)
返回一个有序
LongStream 从
startInclusive (含)至
endInclusive (含)的
1 增量步。
|
OptionalLong |
reduce(LongBinaryOperator op)
|
long |
reduce(long identity, LongBinaryOperator op)
对这一
reduction流元素,使用提供的价值认同和
associative累积函数,返回值减少。
|
LongStream |
sequential()
返回一个连续的等效流。
|
LongStream |
skip(long n)
返回一个包含此流的其余部分丢弃的流的第一
n 元素后流。
|
LongStream |
sorted()
返回按排序顺序由该流的元素组成的流。
|
Spliterator.OfLong |
spliterator()
返回一个对该流的元素spliterator。
|
long |
sum()
返回此流中元素的和。
|
LongSummaryStatistics |
summaryStatistics()
返回一个
LongSummaryStatistics 描述该流的元素的各种汇总数据。
|
long[] |
toArray()
返回包含此流元素的数组。
|
close, isParallel, onClose, unordered
LongStream filter(LongPredicate predicate)
predicate
-
non-interfering,
stateless谓词应用到每个元素以确定它是否应该包括
LongStream map(LongUnaryOperator mapper)
mapper
-
non-interfering,
stateless功能适用于每一个元素
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Stream
。
这是一个 intermediate operation。
U
-新的流元素类型
mapper
-
non-interfering,
stateless功能适用于每一个元素
IntStream mapToInt(LongToIntFunction mapper)
IntStream
。
mapper
-
non-interfering,
stateless功能适用于每一个元素
DoubleStream mapToDouble(LongToDoubleFunction mapper)
DoubleStream
。
mapper
-
non-interfering,
stateless功能适用于每一个元素
LongStream flatMap(LongFunction<? extends LongStream> mapper)
closed
后其内容被放置到该流。(如果一个映射的流
null
空流使用,而不是
。)
mapper
-
non-interfering,
stateless功能适用于每个元素产生一个新值
LongStream
Stream.flatMap(Function)
LongStream distinct()
LongStream sorted()
LongStream peek(LongConsumer action)
对于并行流管道,操作可以在任何时间和任何线程中调用元素,由上游操作提供。如果操作修改共享状态,则负责提供所需的同步。
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
-
non-interfering动作执行的元素作为他们的消费从流
LongStream limit(long maxSize)
maxSize
。
limit()
一般顺序流管道便宜的操作,它可以在有序的平行管道是相当昂贵的,尤其是对
maxSize
大的值,因为
limit(n)
约束还不是任何n个元素,而第n个元素在遇到订单。使用一个无序的流源(如
generate(LongSupplier)
)或拆卸顺序约束与
BaseStream.unordered()
可能导致并联管道
limit()
显著加速,如果你的情况允许语义。如果遇到顺序一致性是必需的,和你所经历的可怜的性能或内存利用并行管道
limit()
,切顺序执行
sequential()
可以提高性能。
maxSize
-流应限制元素的数量
IllegalArgumentException
-如果
maxSize
是负的
LongStream skip(long n)
skip()
一般顺序流管道便宜的操作,它可以在有序的平行管道是相当昂贵的,尤其是对
n
大的值,因为
skip(n)
约束跳过不是任何n个元素,而第n个元素在遇到订单。使用一个无序的流源(如
generate(LongSupplier)
)或拆卸顺序约束与
BaseStream.unordered()
可能导致并行管道在
skip()
显著加速,如果你的情况允许语义。如果遇到顺序一致性是必需的,和你所经历的可怜的性能或内存利用并行管道
skip()
,切顺序执行
sequential()
可以提高性能。
n
-领先的元素数跳过
IllegalArgumentException
-如果
n
是负的
void forEach(LongConsumer action)
这是一个terminal operation。
对于并行流管道,这种操作不保证尊重流的遇到顺序,这样做会牺牲并行的利益。对于任何给定的元素,动作可以在任何时间和任何线程中执行库所选择的任何线程上执行。如果操作访问共享状态,则负责提供所需的同步。
action
-
non-interfering行动对元件进行
void forEachOrdered(LongConsumer action)
这是一个terminal operation。
action
-
non-interfering行动对元件进行
forEach(LongConsumer)
long[] toArray()
这是一个terminal operation。
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
函数必须是一个associative功能。
这是一个terminal operation。
long sum = integers.reduce(0, (a, b) -> a+b);
或更紧:
long sum = integers.reduce(0, Long::sum);
虽然这可能看起来更迂回的方式进行聚集相比简直变异运行总在循环,减少操作并行化更优雅,不需要额外的同步,大大降低了数据竞争的风险。
identity
为累加功能价值认同
op
-
associative,
non-interfering,结合二值
stateless功能
sum()
,
min()
,
max()
,
average()
OptionalLong reduce(LongBinaryOperator op)
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();
但不受约束的执行顺序。
的accumulator
函数必须是一个associative功能。
这是一个terminal operation。
op
-
associative,
non-interfering,结合二值
stateless功能
reduce(long, LongBinaryOperator)
<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
操作可以并行而不需要额外的同步。
这是一个terminal operation。
R
-结果类型
supplier
-一个功能,创建一个新的结果的容器。对于一个并行执行,这个函数可以被调用多次,每次都必须返回一个新值。
accumulator
-
associative,
non-interfering,将一个额外的元素到一个结果
stateless功能
combiner
-
associative,
non-interfering,结合二值
stateless功能,必须与蓄电池功能兼容
Stream.collect(Supplier, BiConsumer, BiConsumer)
long sum()
OptionalLong min()
OptionalLong
描述该流的最小元素,或一个空如果此流是空的。这是一个
reduction特例,相当于:
return reduce(Long::min);
这是一个terminal operation。
OptionalLong
包含此流的最小元素,或一个空的
OptionalLong
如果流是空的
OptionalLong max()
OptionalLong
描述此流的最大元素,或一个空如果此流是空的。这是一个
reduction特例,相当于:
return reduce(Long::max);
这是一个terminal operation。
OptionalLong
包含此流的最大元素,或一个空的
OptionalLong
如果流是空的
long count()
OptionalDouble average()
OptionalDouble
包含此流的平均元素,或一个空的可选如果流是空的
LongSummaryStatistics summaryStatistics()
LongSummaryStatistics
描述该流的元素的各种汇总数据
boolean anyMatch(LongPredicate predicate)
false
返回谓词不评价。
predicate
-
non-interfering,
stateless谓词适用于此流的元素
true
如果流的任何元素匹配提供的谓词,否则
false
boolean allMatch(LongPredicate predicate)
true
返回谓词不评价。
true
(无论P(x))。
predicate
-
non-interfering,
stateless谓词适用于此流的元素
true
如果所有元素的流匹配提供的谓词或流为空,否则
false
boolean noneMatch(LongPredicate predicate)
true
返回谓词不评价。
true
,无论P(x)。
predicate
-
non-interfering,
stateless谓词适用于此流的元素
true
如果没有元素的流匹配提供的谓词或流为空,否则
false
OptionalLong findFirst()
OptionalLong
描述此流的第一个元素,或者一个空的
OptionalLong
如果流是空的。如果流没有遇到顺序,则任何元素可能会返回。
OptionalLong
描述此流的第一个元素,或者一个空的
OptionalLong
如果流是空的
OptionalLong findAny()
OptionalLong
描述一些流元素,或一个空的
OptionalLong
如果流是空的。
这是一个short-circuiting terminal operation。
该操作行为明确不确定的;它是自由的选择流中的任何元素。这是为了允许在并行操作的最大性能;成本是在同一来源的多个调用不返回相同的结果。(如果一个稳定的结果是预期的,使用findFirst()
代替。)
OptionalLong
描述此流的元素,或一个空的
OptionalLong
如果流是空的
findFirst()
DoubleStream asDoubleStream()
DoubleStream
,转换为
double
LongStream sequential()
BaseStream
sequential
接口
BaseStream<Long,LongStream>
LongStream parallel()
BaseStream
parallel
接口
BaseStream<Long,LongStream>
PrimitiveIterator.OfLong iterator()
BaseStream
这是一个terminal operation。
iterator
接口
BaseStream<Long,LongStream>
Spliterator.OfLong spliterator()
BaseStream
这是一个terminal operation。
spliterator
接口
BaseStream<Long,LongStream>
static LongStream.Builder builder()
LongStream
生成器。
static LongStream empty()
LongStream
。
static LongStream of(long t)
LongStream
。
t
-单元
static LongStream of(long... values)
values
-新的流元素
static LongStream iterate(long seed, LongUnaryOperator f)
LongStream
由最初的一元
seed
函数的
f
迭代应用产生的,产生一个由
seed
,
f(seed)
,
f(f(seed))
Stream
,等
第一单元(位置0
)在LongStream
将提供seed
。对于n > 0
,位置n
元素,将在位置n - 1
元素的应用功能f
结果。
seed
-初始元
f
-函数被应用到以前的元素产生一个新的元素
LongStream
static LongStream generate(LongSupplier s)
LongSupplier
生成。这是适用于产生恒定的流,随机元素的流等。
s
-生成元素的
LongSupplier
LongStream
static LongStream range(long startInclusive, long endExclusive)
LongStream
从
startInclusive
(含)至
endExclusive
(独家)由
1
增量步。
增加值相等的序列可以按顺序使用for
回路如下生产:
for (long i = startInclusive; i < endExclusive ; i++) { ... }
startInclusive
-(含)的初始值
endExclusive
-独家上限
long
元素顺序
LongStream
范围
static LongStream rangeClosed(long startInclusive, long endInclusive)
LongStream
从
startInclusive
(含)至
endInclusive
(含)的
1
增量步。
增加值相等的序列可以按顺序使用for
回路如下生产:
for (long i = startInclusive; i <= endInclusive ; i++) { ... }
startInclusive
-(含)的初始值
endInclusive
的包容上限
long
元素顺序
LongStream
范围
static LongStream concat(LongStream a, LongStream b)
StackOverflowException
。
a
-第一流
b
-二流
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.