接口IntStream
-
-
所有超级接口:
- AutoCloseable, BaseStream < Integer, IntStream >
- 公共接口IntStream 扩展BaseStream < Integer,IntStream >
- 支持顺序和并行聚合操作的原始int值元素序列。这是
int
原始的专业化Stream
。以下示例说明使用
Stream
和IntStream
计算红色小部件权重的总和的聚合操作:
请参阅类文档int sum = widgets.stream() .filter(w -> w.getColor() == RED) .mapToInt(w -> w.getWeight()) .sum();
Stream
和用于包文档java.util.stream为流的附加说明书中,流操作,流管道,和平行度。 -
-
以来:
- 1.8 也可以看看:
-
Stream
, java.util.stream
-
- 方法摘要
-
修饰符和类型方法和说明
boolean
allMatch(IntPredicate predicate)
返回此流的所有元素是否与提供的谓词匹配。boolean
anyMatch(IntPredicate predicate)
返回此流的任何元素是否与提供的谓词匹配。返回由DoubleStream
该流的元素组成的转换为double
。返回由LongStream
该流的元素组成的转换为long
。average()
返回OptionalDouble
描述此流的元素的算术平均值,如果此流为空,则返回空值。boxed()
返回一个Stream
由此流的元素组成的,每个元素包含一个Integer
。static IntStream.Builder
builder()
返回一个生成器IntStream
。<R> R
collect(Supplier<R> supplier, ObjIntConsumer<R> accumulator, BiConsumer<R,R> combiner)
对此流的元素执行 可变缩减操作。static IntStream
创建一个懒惰连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。long
count()
返回此流中的元素数。distinct()
返回由该流的不同元素组成的流。static IntStream
empty()
返回一个空的顺序IntStream
。filter(IntPredicate predicate)
返回由与此给定谓词匹配的此流的元素组成的流。findAny()
返回描述OptionalInt
流的某些元素,OptionalInt
如果流为空,则返回空。返回OptionalInt
描述此流的第一个元素,OptionalInt
如果流为空,则返回一个空。flatMap(IntFunction<? extends IntStream> mapper)
返回由通过将提供的映射函数应用于每个元素而产生的映射流的内容来替换该流的每个元素的结果的流。void
forEach(IntConsumer action)
对此流的每个元素执行操作。void
forEachOrdered(IntConsumer action)
对此流的每个元素执行一个操作,保证每个元素按遇到顺序处理,以便具有定义的遇到顺序的流。static IntStream
返回无限顺序无序流,其中每个元素由提供的每个元素生成IntSupplier
。static IntStream
iterate(int seed, IntUnaryOperator f)
返回一个无限连续有序IntStream
通过函数的迭代应用产生f
为初始元素seed
,产生Stream
包括seed
,f(seed)
,f(f(seed))
,等。iterator()
返回此流的元素的迭代器。limit(long maxSize)
返回由该流的元素组成的流,被截断为不再maxSize
长度。map(IntUnaryOperator mapper)
返回由给定函数应用于此流的元素的结果组成的流。mapToDouble(IntToDoubleFunction mapper)
返回一个DoubleStream
由给定函数应用于此流的元素的结果。mapToLong(IntToLongFunction mapper)
返回一个LongStream
由给定函数应用于此流的元素的结果。<U> Stream<U>
mapToObj(IntFunction<? extends U> mapper)
返回一个对象值Stream
,其中包含将给定函数应用于此流的元素的结果。max()
返回OptionalInt
描述此流的最大元素,如果此流为空,则返回空可选项。min()
返回OptionalInt
描述此流的最小元素,如果此流为空,则返回空可选项。boolean
noneMatch(IntPredicate predicate)
返回此流的元素是否与提供的谓词匹配。static IntStream
of(int... values)
返回其元素是指定值的顺序排序流。static IntStream
of(int t)
返回包含IntStream
单个元素的顺序。parallel()
返回平行的等效流。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
。int
reduce(int identity, IntBinaryOperator op)
返回顺序的等效流。skip(long n)
在丢弃流的第一个n
元素后,返回由该流的剩余元素组成的流。sorted()
以排序顺序返回由该流的元素组成的流。返回此流的元素的拼接器。int
sum()
返回此流中元素的总和。返回IntSummaryStatistics
描述有关此流的元素的各种摘要数据。int[]
toArray()
返回一个包含此流的元素的数组。close, isParallel, onClose, unordered
- 从java.util.stream接口继承的方法。BaseStream
- 方法详细
- 过滤
- IntStream 过滤器(IntPredicate 谓词)
- 返回由与此给定谓词匹配的此流的元素组成的流。
这是一个中间操作。
-
- 地图
- IntStream 映射(IntUnaryOperator 映射器)
- 返回由给定函数应用于此流的元素的结果组成的流。
这是一个中间操作。
-
- mapToObj
- <U> Stream <U> mapToObj(IntFunction <?extends U> mapper)
- 返回一个对象值
Stream
,其中包含将给定函数应用于此流的元素的结果。这是一个 中间操作。
-
- mapToLong
- LongStream mapToLong(IntToLongFunction 映射器)
- 返回一个
LongStream
由给定函数应用于此流的元素的结果。这是一个中间操作。
-
- mapToDouble
- DoubleStream mapToDouble(IntToDoubleFunction mapper)
- 返回一个
DoubleStream
由给定函数应用于此流的元素的结果。这是一个中间操作。
-
- flatMap
- IntStream flatMap(IntFunction <?extends IntStream > mapper)
- 返回由通过将提供的映射函数应用于每个元素而产生的映射流的内容来替换该流的每个元素的结果的流。每个映射的流
closed
在其内容已经被放入此流之后。(如果使用映射的流是null
空的流)。这是一个中间操作。
-
-
参数:
-
mapper
-一个 非干扰, 无状态 功能应用到其中产生的每个元素IntStream
的新值的
返回:
- 新的流 也可以看看:
-
Stream.flatMap(Function)
-
-
- 窥视
- IntStream 偷看(IntConsumer 动作)
- 返回由该流的元素组成的流,另外在从生成的流中消耗元素时对每个元素执行提供的操作。
这是一个中间操作。
对于并行流管线,可以在上游操作的任何时间和任何线程中调用该元素可用的动作。如果操作修改共享状态,则负责提供所需的同步。
-
-
API注:
-
该方法主要用于支持调试,您希望在流程中流过某个特定点时查看元素:
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
- 在流中消耗的元素上执行的 非干扰操作
返回:
- 新的流
-
该方法主要用于支持调试,您希望在流程中流过某个特定点时查看元素:
-
- 限制
- IntStream limit(long maxSize)
- 返回由该流的元素组成的流,被截断为不再
maxSize
长度。这是一个短暂的有状态的中间操作。
-
-
API注:
-
虽然
limit()
在顺序流管线上通常是一种便宜的操作,但是在有序的并行管道上可能是相当昂贵的,特别是对于大的值maxSize
,因为limit(n)
限制不仅返回任何 n个元素,而且 返回遇到顺序中的 前n个元素。如果您的情况允许,使用无序流源(如generate(IntSupplier)
)或删除排序约束BaseStream.unordered()
可能会导致limit()
并行流水线的显着加速。如果需要与遇到顺序一致,并且limit()
在并行管道中遇到较差的性能或内存 利用率,则切换到顺序执行sequential()
可能会提高性能。
参数:
-
maxSize
- 流应该限制的元素数量
返回:
- 新的流 抛出:
-
IllegalArgumentException
- 如果maxSize
是否定的
-
虽然
-
- 跳跃
- IntStream skip(long n)
- 在丢弃流的第一个
n
元素后,返回由该流的剩余元素组成的流。如果此流包含少于n
元素,则将返回空流。这是一个有状态的中间操作。
-
-
API注:
-
虽然
skip()
通常是顺序流管线上的廉价操作,但在有序的并行管道上可能是相当昂贵的,特别是对于大值n
,因为skip(n)
被限制为不仅跳过任何 n个元素,而且 跳过遇到次序中的 前n个元素。如果您的情况允许,使用无序流源(如generate(IntSupplier)
)或删除排序约束BaseStream.unordered()
可能会导致skip()
并行流水线的显着加速。如果需要与遇到顺序一致,并且skip()
在并行管道中遇到较差的性能或内存 利用率,则切换到顺序执行sequential()
可能会提高性能。
参数:
-
n
- 要跳过的主要元素的数量
返回:
- 新的流 抛出:
-
IllegalArgumentException
- 如果n
是否定的
-
虽然
-
- 的forEach
- void forEach(IntConsumer 动作)
- 对此流的每个元素执行操作。
这是一个终端操作。
对于并行流管道,此操作不能 保证遵守流的遇到顺序,因为这样做会牺牲并行性的好处。对于任何给定的元素,动作可以在图书馆选择的任何时间和任何线索中执行。如果操作访问共享状态,则负责提供所需的同步。
-
-
参数:
-
action
- 对元素执行 不干扰的行为
-
-
- forEachOrdered
- void forEachOrdered(IntConsumer 动作)
- 对此流的每个元素执行一个操作,保证每个元素按遇到顺序处理,以便具有定义的遇到顺序的流。
这是一个终端操作。
-
-
参数:
-
action
- 对元素执行 不干扰的行为
也可以看看:
-
forEach(IntConsumer)
-
-
- 指定者
- int [] toArray()
- 返回一个包含此流的元素的数组。
这是一个终端操作。
-
-
返回:
- 一个包含此流的元素的数组
-
- 减少
- 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
函数必须是 关联函数。这是一个终端操作。
-
-
API注:
-
总和,最小,最大和平均都是减少的特殊情况。一个数字流可以表示为:
或更紧凑:int sum = integers.reduce(0, (a, b) -> a+b);
int sum = integers.reduce(0, Integer::sum);
尽管与简单地将循环中的总体变量相比,这可能看起来更为迂回的方式进行,但减少操作更平稳地并行化,而不需要额外的同步,并大大降低了数据竞争的风险。
参数:
-
identity
- 积累函数的身份值 -
op
-一个 关联, 无干扰, 无状态 的组合两个值函数
返回:
- 减少的结果 也可以看看:
-
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
函数必须是 关联函数。这是一个终端操作。
-
-
参数:
-
op
-一个 关联, 无干扰, 无状态 的组合两个值函数
返回:
- 减少的结果 也可以看看:
-
reduce(int, IntBinaryOperator)
-
-
- 搜集
- 收集(供应商,供应商, 对象消费者,聚合器, BiConsumer <R,R>组合器)
- 对此流的元素执行可变缩减操作。可变缩减是其中减值是可变结果容器的缩减值,例如,
ArrayList
通过更新结果的状态而不是通过替换结果来合并元素。这产生的结果相当于:R result = supplier.get(); for (int element : this stream) accumulator.accept(result, element); return result;
像这样
reduce(int, IntBinaryOperator)
,collect
操作可以并行化,而不需要额外的同步。这是一个终端操作。
-
- 分
- OptionalInt min()
- 返回
OptionalInt
描述此流的最小元素,如果此流为空,则返回空可选项。这是减少的特殊情况, 相当于:return reduce(Integer::min);
这是一个终端操作。
-
-
返回:
-
一个
OptionalInt
包含此流的最小元素,OptionalInt
如果流为空,则为空
-
一个
-
- 最大
- OptionalInt max()
- 返回
OptionalInt
描述此流的最大元素,如果此流为空,则返回空可选项。这是减少的特殊情况, 相当于:return reduce(Integer::max);
这是一个终端操作。
-
-
返回:
-
包含
OptionalInt
此流的最大元素,OptionalInt
如果流为空,则为空
-
包含
-
- 平均
- OptionalDouble average()
- 返回
OptionalDouble
描述此流的元素的算术平均值,如果此流为空,则返回空值。这是减少的一个 特例。这是一个终端操作。
-
-
返回:
-
一个
OptionalDouble
包含此流的平均元素,如果流为空,则为空可选
-
一个
-
- summaryStatistics
- IntSummaryStatistics summaryStatistics()
- 返回
IntSummaryStatistics
描述有关此流的元素的各种摘要数据。这是减少的一个特例。这是一个终端操作。
-
-
返回:
-
一个
IntSummaryStatistics
有关此流中的元素描述各种摘要数据
-
一个
-
- anyMatch
- boolean anyMatch(IntPredicate 谓词)
- 返回此流的任何元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空,
false
则返回并且不评估谓词。这是一个短路终端操作。
-
- allMatch
- boolean allMatch(IntPredicate 谓词)
- 返回此流的所有元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空,
true
则返回并且不评估谓词。这是一个短路终端操作。
-
- noneMatch
- boolean noneMatch(IntPredicate 谓词)
- 返回此流的元素是否与提供的谓词匹配。如果不需要确定结果,则不能评估所有元素上的谓词。如果流为空,
true
则返回并且不评估谓词。这是一个短路终端操作。
-
- 使用FindFirst
- OptionalInt findFirst()
- 返回
OptionalInt
描述此流的第一个元素,OptionalInt
如果流为空,则返回一个空。如果流没有遇到顺序,则可能会返回任何元素。这是一个短路终端操作。
-
-
返回:
-
一个
OptionalInt
描述该流的第一个元素,或空OptionalInt
如果流是空
-
一个
-
- findAny
- OptionalInt findAny()
- 返回描述
OptionalInt
流的某些元素,OptionalInt
如果流为空,则返回空。这是一个短路终端操作。
这个操作的行为显然是不确定的; 可以自由选择流中的任何元素。这是为了允许并行操作中的最大性能; 成本是同一来源上的多次调用可能不会返回相同的结果。(如果需要稳定的结果,请
findFirst()
改用。) -
-
返回:
-
一个
OptionalInt
描述该流的某些元件,或者一个空OptionalInt
如果流是空
也可以看看:
-
findFirst()
-
一个
-
- asLongStream
- LongStream asLongStream()
- 返回由
LongStream
该流的元素组成的转换为long
。这是一个中间操作。
-
-
返回:
-
a
LongStream
由这个流的元素组成,转换为long
-
a
-
- asDoubleStream
- DoubleStream asDoubleStream()
- 返回由
DoubleStream
该流的元素组成的转换为double
。这是一个中间操作。
-
-
返回:
-
a
DoubleStream
由这个流的元素组成,转换为double
-
a
-
- 顺序
- IntStream 序列()
- 说明从界面复制:
BaseStream
- 返回顺序的等效流。可能返回自己,因为流已经是顺序的,或者因为底层流状态被修改为顺序的。
这是一个中间操作。
-
-
指定者:
-
sequential
在界面BaseStream<Integer,IntStream>
返回:
- 顺序流
-
-
- 平行
- IntStream parallel()
- 说明从界面复制:
BaseStream
- 返回平行的等效流。可能会返回自己,因为流已经是并行的,或者因为底层流状态被修改为并行。
这是一个中间操作。
-
-
指定者:
-
parallel
在界面BaseStream<Integer,IntStream>
返回:
- 并行流
-
-
- 迭代器
- PrimitiveIterator.OfInt iterator()
- 说明从界面复制:
BaseStream
- 返回此流的元素的迭代器。
这是一个终端操作。
-
-
指定者:
-
iterator
在界面BaseStream<Integer,IntStream>
返回:
- 该流的元素迭代器
-
-
- spliterator
- Spliterator.OfInt 拼接器()
- 说明从界面复制:
BaseStream
- 返回此流的元素的拼接器。
这是一个终端操作。
-
-
指定者:
-
spliterator
在界面BaseStream<Integer,IntStream>
返回:
- 该流的元素拼接器
-
-
- 建设者
- 静态 IntStream.Builder builder()
- 返回一个生成器
IntStream
。 -
-
返回:
- 流构建器
-
- 空
- 静态 IntStream 空()
- 返回一个空的顺序
IntStream
。 -
-
返回:
- 一个空的顺序流
-
- 的
- (int t)的静态 IntStream
- 返回包含
IntStream
单个元素的顺序。 -
-
参数:
-
t
- 单一元素
返回:
- 单例顺序流
-
-
- 的
- 静态 intStream (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
。 -
-
参数:
-
seed
- 初始元素 -
f
- 要应用于上一个元素以生成新元素的函数
返回:
-
一个新的顺序
IntStream
-
-
- 生成
- 静态 IntStream 生成(IntSupplier s)
- 返回无限顺序无序流,其中每个元素由提供的每个元素生成
IntSupplier
。这适合于产生恒定流,随机元素流等 -
-
参数:
-
s
-IntSupplier
用于生成的元素
返回:
-
一个新的无限顺序无序
IntStream
-
-
- 范围
- 静态 IntStream 范围(int startInclusive, int endExclusive)
- 通过增量步骤返回
IntStream
从startInclusive
(包括)到endExclusive
(排除)的顺序排列1
。 -
-
API注:
-
可以使用
for
循环如下顺序地产生递增值的等效序列:for (int i = startInclusive; i < endExclusive ; i++) { ... }
参数:
-
startInclusive
- (含)初始值 -
endExclusive
- 专属上限
返回:
-
顺序
IntStream
为的范围内int
的元件
-
-
- rangeClosed
- static IntStream rangeClosed(int startInclusive, int endInclusive)
- 通过增量步骤返回
IntStream
从startInclusive
(包括)到endInclusive
(包括)的顺序排列1
。 -
-
API注:
-
可以使用
for
循环如下顺序地产生递增值的等效序列:for (int i = startInclusive; i <= endInclusive ; i++) { ... }
参数:
-
startInclusive
- (含)初始值 -
endInclusive
- 包容上限
返回:
-
顺序
IntStream
为的范围内int
的元件
-