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