构建
Terminal Operations
Arrays.stream(数组)
根据数组构建
Collection.stream()
根据集合构建
Stream.of(对象1, 对象2, ...)
根据对象构建
生成
Terminal Operations
IntStream.range(a, b)
根据范围生成(含 a 不含 b)
IntStream.rangeClosed(a, b)
根据范围生成(含 a 也含 b)
IntStream.iterate(s, p -> c)
s 初始值, p 前值, c 当前值
IntStream.generate(() -> c)
c 当前值
合并
Terminal Operations
Stream.concat(流1, 流2)
合并两个流
截取
Terminal Operations
stream.skip(n)
舍弃 n 个, 保留剩余
stream.limit(n)
🔌从当前保留 n 个
stream.dropWhile(x -> boolean)
舍弃, 直到不满足条件, 保留剩余
stream.takeWhile(x -> boolean)
🔌保留, 直到不满足条件, 舍弃剩余
过滤
Terminal Operations
stream.filter(x -> boolean)
满足条件的保留
转换
Terminal Operations
stream.map(x -> y)
将 x 转换为 y
stream.flatMap(x -> substream)
将 x 转换为 substream
stream.mapMulti((x, consumer) -> void)
consumer 消费的 x 会进入结果
stream.mapToInt(x -> int)
将 x 转换为 int
stream.mapToLong(x -> long)
将 x 转换为 long
stream.mapToDouble(x -> double)
将 x 转换为 double
排序与去重
Terminal Operations
stream.distinct()
去重
stream.sort((a, b) -> int)
a 与 b 比较,返回负 a 小,返回零相等,返回正 b 小
查找
Terminal Operations
stream.findFirst()
🔌找到第一个, 返回 Optional
stream.findAny()
🔌随便找一个, 返回 Optional
判断
Terminal Operations
stream.anyMatch(x -> boolean)
🔌随便一个满足条件, 返回 true
stream.allMatch(x -> boolean)
🔌所有都满足条件, 才返回 true
stream.noneMatch(x -> boolean)
🔌所有都不满足条件, 才返回 true
消费
Terminal Operations
stream.forEach(x -> void)
消费
stream.forEachOrdered(x -> void)
按序消费
化简
Terminal Operations
stream.reduce(init, (p, x) -> r)
init 初始值, 用上次结果 p 和当前元素 x 生成本次结果 r
stream.reduce(init, (p, x) -> r, (r1, r2) -> r)
最后是表示结果之间进行合并
stream.reduce((p, x) -> r)
用第一个值作为初始值, 返回 Optional
stream.min((a, b) -> int)
🎭求最小值
stream.max((a, b) -> int)
🎭求最大值
stream.count()
🎭求个数
收集
Terminal Operations
stream.toArray()
收集为数组
stream.toArray(size -> new A[size])
收集为数组
stream.collect(() -> c, (c, x) -> void, (c1, c2) -> c)
收集到容器:首先创建容器 c, 其次将 x 放入 c, 最后合并所有容器
调试
Terminal Operations
stream.peek(x -> void)
调试
收集器
Terminal Operations
joining(delimiter)
拼接字符串, delimiter 分隔符
toList()
用 ArrayList 收集
toSet()
用 HashSet 收集
toMap(x -> k, x -> v)
从 x 从提取出 k, v
toUnmodifiableList()
用不可变 List 收集
toUnmodifiableSet()
用不可变 Set 收集
toUnmodifiableMap(x -> k, x -> v)
用不可变 Map 收集
partitioningBy(x -> boolean, dc)
按条件分区, 用下游收集器 dc 收集
groupingBy(x -> k, dc)
从 x 从提取出 k, 用下游收集器 dc 收集
mapping(x -> y, dc)
💧将 x 转换为 y, 用下游收集器 dc 收集
flatMapping(x -> substream, dc)
💧将 x 转换为 substream, 用下游收集器 dc 收集
filtering(x -> boolean, dc)
💧过滤后, 用下游收集器 dc 收集
counting()
💧求个数
minBy((a, b) -> int)
💧求最小
maxBy((a, b) -> int)
💧求最大
summingInt(x -> int)
💧转 int 后求和
averagingInt(x -> int)
💧转 int 后求平均
reducing(init, (p, x) -> r)
💧init 初始值, 用上次结果 p 和当前元素 x 生成本次结果 r
int 流
Terminal Operations
intstream.mapToObj(int -> obj)
转换为 obj 流
intstream.boxed()
转换为 Integer 流
intstream.sum()
🎭求和
intstream.min()
🎭求最小值, 返回 Optional
intstream.max()
🎭求最大值, 返回 Optional
intstream.average()
求平均值, 返回 Optional
intstream.summaryStatistics()
🎭综合 count sum min max average