Java stream流集合汇总排序、拼接、过滤、去重、求和、最大值、最小值和平均值等操作

这篇博客总结了Java Stream的各种操作,包括map的使用,如元素加i、字符串转大写、字符串数组转整数数组;flatMap的转换和求和;filter和peek的筛选功能;unordered的乱序处理;distinct去重;limit和skip的截取操作;sorted的排序;findAny、anyMatch、allMatch和noneMatch的查询条件;forEach和toArray的遍历与转换;reduce的合并;以及collect的收集、统计、分区和分组等实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:stream流相关操作汇总,也是从别人写的加上自己查了些复制过来的供自己开发使用

目录

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", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值