public interface IntStream extends BaseStream<Integer,IntStream>
int
原始专业Stream
。
以下示例说明使用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 此流的元素的算术平均值的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 由函数的迭代应用产生
f 至初始元素
seed ,产生
Stream 包括
seed ,
f(seed) ,
f(f(seed)) ,等
|
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,如果此流为空,则返回一个空的可选项。
|
OptionalInt |
min()
返回
OptionalInt 此流的最小元素的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)
从
startInclusive (含)的顺序排列
IntStream 到
endInclusive (含),增量步长为
1 。
|
OptionalInt |
reduce(IntBinaryOperator op)
|
int |
reduce(int identity, IntBinaryOperator op)
使用提供的身份值和
associative累积功能对此流的元素执行
reduction ,并返回减小的值。
|
IntStream |
sequential()
返回顺序的等效流。
|
IntStream |
skip(long n)
在丢弃流的第一个
n 元素后,返回由该流的
n 元素组成的流。
|
IntStream |
sorted()
以排序顺序返回由该流的元素组成的流。
|
Spliterator.OfInt |
spliterator()
返回此流的元素的拼接器。
|
int |
sum()
返回此流中元素的总和。
|
IntSummaryStatistics |
summaryStatistics()
返回一个
IntSummaryStatistics 描述有关此流的元素的各种摘要数据。
|
int[] |
toArray()
返回一个包含此流的元素的数组。
|
close, isParallel, onClose, unordered
IntStream filter(IntPredicate predicate)
这是一个intermediate operation 。
predicate
- a
non-interfering,stateless
谓词适用于每个元素,以确定是否应包括
IntStream map(IntUnaryOperator mapper)
这是一个intermediate operation 。
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
,其中包含将给定函数应用于此流的元素的结果。
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless函数应用到每个元件
DoubleStream mapToDouble(IntToDoubleFunction mapper)
DoubleStream
,其中包含将给定函数应用于此流的元素的结果。
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless函数应用到每个元件
IntStream flatMap(IntFunction<? extends IntStream> mapper)
closed
。
(如果映射的流是null
则使用空的流)。
这是一个intermediate operation 。
mapper
-一个
non-interfering ,
stateless功能应用到其中产生的每个元素
IntStream
新值的
Stream.flatMap(Function)
IntStream distinct()
IntStream sorted()
IntStream peek(IntConsumer action)
这是一个intermediate operation 。
对于并行流管线,可以在上游操作的任何时间和任何线程中调用该元素可用的动作。 如果操作修改共享状态,则负责提供所需的同步。
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
此流的最小元素的OptionalInt,如果此流为空,则返回一个空的可选项。
这是一个reduction的特殊情况,相当于:
return reduce(Integer::min);
这是一个terminal operation 。
OptionalInt
此流的最小元素的
OptionalInt
如果流为空,
OptionalInt
OptionalInt max()
OptionalInt
此流的最大元素的OptionalInt,如果此流为空,则返回一个空的可选项。
这是一个reduction的特殊情况,相当于:
return reduce(Integer::max);
这是一个terminal operation 。
OptionalInt
此流的最大元素的
OptionalInt
如果流为空,
OptionalInt
long count()
OptionalDouble average()
OptionalDouble
此流的元素的算术平均值的OptionalDouble,如果此流为空,则返回一个空的可选项。
这是一个reduction的特例 。
这是一个terminal operation 。
OptionalDouble
此流的平均元素的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
OptionalInt findAny()
OptionalInt
如果流为空,则返回一个空的OptionalInt
。
这是一个short-circuiting terminal operation 。
这个操作的行为显然是不确定的; 可以自由选择流中的任何元素。 这是为了允许并行操作中的最大性能; 成本是同一来源上的多次调用可能不会返回相同的结果。 (如果需要稳定的结果,请改用findFirst()
)
OptionalInt
此流的某些元素的
OptionalInt
如果流为空,
OptionalInt
findFirst()
LongStream asLongStream()
LongStream
,由该流的元素组成,转换为long
。
这是一个intermediate operation 。
LongStream
由这个流的元素组成,转换为
long
DoubleStream asDoubleStream()
DoubleStream
组成的流的元素,转换为double
。
这是一个intermediate operation 。
DoubleStream
由这个流的元素组成,转换为
double
Stream<Integer> boxed()
Stream
由该流的盒装方式的元素,每个元素的Integer
。
这是一个intermediate operation 。
Stream
一致的这个流的元素,每个盒装到一个
Integer
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
由函数的迭代应用产生f
至初始元素seed
,产生Stream
包括seed
, f(seed)
, f(f(seed))
,等
第一元件(位置0
在) IntStream
将是提供seed
。 对于n > 0
,位置n
处的元素将是将函数f
应用于位置n - 1
的元素的n - 1
。
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
- 独占上限
IntStream
的范围为
int
元素
static IntStream rangeClosed(int startInclusive, int endInclusive)
IntStream
从
startInclusive
(含)至
endInclusive
通过的递增步长(含)
1
。
可以使用for
循环顺序地产生递增值的等效序列,如下所示:
for (int i = startInclusive; i <= endInclusive ; i++) { ... }
startInclusive
- (含)初始值
endInclusive
- 包含上限
IntStream
为的范围
int
元件