Java Stream 操作
作者:
我要番茄锅
,
2020-09-20 15:52:03
,
所有人可见
,
阅读 599
中间操作流
流方法 |
含义 |
示例 |
filter |
返回符合条件的元素的流 |
strs.stream().filter(str -> str.contains(“ab”)).collect(Collectors.toList()); |
distinct |
返回一个元素各异(根据流所生成元素的 hashCode 和 equals 方法实现)的流 |
nums.stream().distinct().collect(Collectors.toList()); |
limit |
返回一个不超过给定长度的流 |
strs.stream().limit(3).collect(Collectors.toList()); |
skip |
返回一个扔掉了前 n 个元素的流 |
strs.stream().skip(3).collect(Collectors.toList()); |
map |
接受一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成一个新的元素 |
strs.stream().map(str -> str + “-abc”).collect(Collectors.toList()); |
flatMap |
流扁平化,把一个流中的每个值都换成另一个流,然后将所有的流连接成一个流 |
strs.stream().flatMap(Arrays::stream).collect(Collectors.toList()); |
sorted |
返回排序后的流 |
strs.stream().sorted().collect(Collectors.toList()); |
终止操作符
流方法 |
含义 |
示例 |
anyMatch |
检查是否至少匹配一个元素,返回 boolean |
strs.stream().anyMatch(str -> str == “abc”); |
allMatch |
检查是否匹配所有元素,返回 boolean |
strs.stream().allMatch(str -> str.length() > 3); |
noneMatch |
检查是否没有匹配的元素,返回 boolean |
strs.stream().noneMatch(str -> str.length() < 1); |
findAny |
返回当前流中的任意一个元素 |
strs.stream().findAny(); |
findFirst |
返回当前流中的第一个元素 |
strs.stream().findFirst(); |
forEach |
遍历流 |
strs.stream().forEach(str -> System.out.println(str)); |
collect |
收集器,将流转换成其它形式 |
strs.stream().collect(Collectors.toSet()); strs.stream().collect(Collectors.toList()); strs.stream().collect(Collectors.toMap(key -> newKey, val -> newVal, (key1, key2) -> key1)); // 第三个参数是 key 重复后的操作 |
reduce |
将流中元素结合起来得到一个值 |
strs.stream().reduct((ret, str) -> ret + str);strs.stream().reduct(“abc”, (ret, str) -> ret + str); // 第一个参数是结果的初始值 |
count/min/max |
返回流中元素个数/最小值/最大值 |
strs.stream().count();strs.stream().min(cmp);strs.stream().max(cmp); |