提示:stream流相关操作汇总,也是从别人写的加上自己查了些复制过来的供自己开发使用
目录
- 一、map方法
- 二、 flatMap方法
- 三、filter方法-筛选功能 peek-过滤功能
- 四、unordered乱序
- 五、distinct去重, limit获取前 n 个元素, skip跳过 Stream 中前 n 个元素
- 六、sorted排序
- 七、findAny任意一个满足条件,anyMatch是否存在任意一个,allMatch是否所有元素都满足给定的条件,noneMatch是否没有元素能匹配给定的条件,findFirst第一个符合筛选条件的
- 八、forEach遍历,forEachOrdered按照给定集合中元素的顺序输出,toArray把给定字符串流转化成数组,reduce合并元素
- 九、collect
List<Student> students = new ArrayList<Student>();
一、map方法
1.对整数数组每个元素加 i:
List<Integer> list = Arrays.asList(1, 2);
List<Integer> newList = list.stream().map(x -> x + i).collect(Collectors.toList());
System.out.println("newList:" + newList);
上面代码输出结果如下:
newList:[1+i, 2+i]
2.字符串数组元素转换为大写:
List<String> list = Arrays.asList("ab", "abc");
List<String> newList = list.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println("newList:" + newList);
上面代码输出结果如下:
newList:[AB, ABC]
3.mapToXXX字符串数组转为整数数组:
包括三个方法:mapToInt、mapToDouble、mapToLong
List<String> list = Arrays.asList("ab", "abc", "abcd", "abcde", "abcdef");
int[] newList = list.stream().mapToInt(r -> r.length()).toArray();
System.out.println("newList:" + Arrays.toString(newList));
上面代码输出结果如下:
newList:[2, 3, 4, 5, 6]
二、 flatMap方法
1.把一个字符串数组转成另一个字符串数组:
List<String> list = Arrays.asList("ab-abcd", "5-4");
List<String> newList = list.stream().flatMap(s -> Arrays.stream(s.split("-"))).collect(Collectors.toList());
System.out.println("newList:" + newList);
上面代码输出结果:
newList:[ab, abcd, 5, 4]
2. flatMapToXXX对给定的二维整数数组求和:
包括三个方法:flatMapToInt、flatMapToLong、flatMapToDouble
int[][] data = {
{
1,2},{
3,4},{
5,6}};
IntStream intStream = Arrays.stream(data).flatMapToInt(row -> Arrays.stream(row));
System.out.println(intStream.sum());
上面代码输出结果如下:
21
三、filter方法-筛选功能 peek-过滤功能
1.filter对象属性值筛选
List<String> nameList = students.stream().filter(x -> x.getScore() >= 90).map(Student::getName).collect(Collectors.toList());
System.out.print("90以上的nameList:" + nameList);
2.peek过滤出 stream 中长度大于 3 的字符串并转为大写:
Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> System.out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped value: " + e))
.collect(Collectors.toList());
上面代码输出结果如下:
Filtered value: three
Mapped value: THREE
Filtered value: four
Mapped value: FOUR
四、unordered乱序
1.把一个有序数组转成无序
Arrays.asList("1", "2", "3", "4", "5")
.parallelStream()
.unordered()
.forEach(r -> System.out.print(r + " "));
上面代码输出结果如下:
3 5 4 2 1
五、distinct去重, limit获取前 n 个元素, skip跳过 Stream 中前 n 个元素
1.去掉字符串数组中的重复字符串
String[] array = {
"a", "b", "b",