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为流的附加说明书中,流操作,流管道,和平行度。
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 此流的元素的算术平均值的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 由函数的迭代应用产生
f 至初始元素
seed ,产生
Stream 包括
seed ,
f(seed) ,
f(f(seed)) ,等
|
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,如果此流为空,则返回一个空的可选项。
|
OptionalLong |
min()
返回
OptionalLong 此流的最小元素的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)
使用提供的身份值和
associative累积功能对此流的元素执行
reduction ,并返回减小的值。
|
LongStream |
sequential()
返回顺序的等效流。
|
LongStream |
skip(long n)
在丢弃流的第一个
n 元素后,返回由该流的
n 元素组成的流。
|
LongStream |
sorted()
以排序顺序返回由该流的元素组成的流。
|
Spliterator.OfLong |
spliterator()
返回此流的元素的拼接器。
|
long |
sum()
返回此流中元素的总和。
|
LongSummaryStatistics |
summaryStatistics()
返回一个
LongSummaryStatistics 描述有关此流的元素的各种摘要数据。
|
long[] |
toArray()
返回一个包含此流的元素的数组。
|
close, isParallel, onClose, unordered
LongStream filter(LongPredicate predicate)
这是一个intermediate operation 。
predicate
- a
non-interfering,stateless
谓词适用于每个元素,以确定是否应包括
LongStream map(LongUnaryOperator mapper)
这是一个intermediate operation 。
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
,其中包含将给定函数应用于此流的元素的结果。
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless函数应用到每个元件
DoubleStream mapToDouble(LongToDoubleFunction mapper)
DoubleStream
,其中包含将给定函数应用于此流的元素的结果。
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless函数应用到每个元件
LongStream flatMap(LongFunction<? extends LongStream> mapper)
closed
。
(如果映射的流为null
则使用空的流。)
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless功能应用到其产生的每个元素
LongStream
新值的
Stream.flatMap(Function)
LongStream distinct()
LongStream sorted()
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();
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
此流的最小元素的OptionalLong,如果此流为空,则返回一个空的可选项。
这是一个reduction的特殊情况,相当于:
return reduce(Long::min);
这是一个terminal operation 。
OptionalLong
此流的最小元素的
OptionalLong
如果流为空,
OptionalLong
OptionalLong max()
OptionalLong
此流的最大元素的OptionalLong,如果此流为空,则返回一个空的可选项。
这是一个reduction的特殊情况,相当于:
return reduce(Long::max);
这是一个terminal operation 。
OptionalLong
此流的最大元素的
OptionalLong
如果流为空,
OptionalLong
long count()
OptionalDouble average()
OptionalDouble
此流的元素的算术平均值的OptionalDouble,如果此流为空,则返回一个空的可选项。
这是一个reduction的特殊情况。
这是一个terminal operation 。
OptionalDouble
此流的平均元素的OptionalDouble,如果流为空,则为空可选
LongSummaryStatistics summaryStatistics()
LongSummaryStatistics
描述了关于这个流的元素的各种总结数据
boolean anyMatch(LongPredicate predicate)
false
返回和谓语不评估。
predicate
- a
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
- a
non-interfering,stateless
谓词适用于此流的元素
true
如果流中没有元素匹配提供的谓词或流是空的,否则
false
OptionalLong findFirst()
OptionalLong
如果流为空,则返回一个空的OptionalLong
。
如果流没有遇到顺序,则可能会返回任何元素。
OptionalLong
此流的第一个元素的
OptionalLong
如果流为空,
OptionalLong
OptionalLong findAny()
OptionalLong
如果流为空,则返回一个空的OptionalLong
。
这是一个short-circuiting terminal operation 。
这个操作的行为显然是不确定的; 可以自由选择流中的任何元素。 这是为了允许并行操作中的最大性能; 成本是同一来源上的多次调用可能不会返回相同的结果。 (如果需要稳定的结果,请改用findFirst()
)
OptionalLong
此流的某些元素的
OptionalLong
如果流为空,
OptionalLong
findFirst()
DoubleStream asDoubleStream()
DoubleStream
由该流中的元素,转换为double
。
这是一个intermediate operation 。
DoubleStream
由这个流的元素组成,转换为
double
Stream<Long> boxed()
Stream
由该流的盒装到所述的元件,每个的Long
。
这是一个intermediate operation 。
Stream
一致的这个流的元素,每个盒装到
Long
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
由函数的迭代应用产生f
至初始元素seed
,产生Stream
包括seed
, f(seed)
, f(f(seed))
,等
第一元件(位置0
在) LongStream
将是提供seed
。 对于n > 0
,位置n
的元素将是将函数f
应用于位置n - 1
的元素的n - 1
。
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
- 专属上限
LongStream
为
long
元素的
long
static LongStream rangeClosed(long startInclusive, long endInclusive)
LongStream
从
startInclusive
(含)至
endInclusive
通过的递增步长(含)
1
。
可以使用for
循环顺序地产生递增值的等效序列,如下所示:
for (long i = startInclusive; i <= endInclusive ; i++) { ... }
startInclusive
- (含)初始值
endInclusive
- 包含上限
LongStream
为的范围
long
元件
static LongStream concat(LongStream a, LongStream b)
StackOverflowException
。
a
- 第一个流
b
- 第二个流