Java Stream流常用功能示例

本文介绍了Java8中Stream API的实用功能,包括按条件过滤、指定字段排序、去重以及映射操作。通过实例展示了如何使用Lambda表达式进行高效的数据处理,如根据特定条件过滤集合、按字段正序或倒序排列、利用TreeSet实现去重,并演示了如何将数据转换成Map。这些技巧在日常开发中非常常见,能提升代码的简洁性和效率。
摘要由CSDN通过智能技术生成

Steam流是Java8的新特性,今个工作中经常用的功能写法

按条件过滤

collect.stream()
        .filter(orderDetail -> orderDetail.getOrderNo().equals(resp.getOrderNo()))
        .collect(Collectors.toList());
  • collect:替换为自己的集合
  • orderDetail :随意起个名字就行,代表集合中的对象
  • filter:这里是按照满足的条件来进行过滤的,是lamda表示写法

按指定字段排序

collect.stream()
		.sorted(Comparator.comparing(AgreementResp::getAgreementNo)
		.reversed())
		.collect(Collectors.toList());
  • collect:替换为自己的集合
  • AgreementResp:替换为集合中的对象类型
  • getAgreementNo:替换为需要排序字段的get方法
  • reversed():逆序排序
  • 其他都是固定写法

按条件去重

collect.stream()
               .collect(Collectors.collectingAndThen(Collectors.toCollection(
               () -> new TreeSet<>(Comparator.comparing(AgreementResp::getAgreementNo))),ArrayList::new));
  • collect:替换为自己的集合
  • AgreementResp:替换为集合中的对象类型
  • getAgreementNo:替换为去重字段的get方法
  • 其他都是固定写法

tips:返回的集合中的元素跟原集合中的元素都是同一个对象引用,改变其中一个中的对象属性,另一个也会相应的变化,所有如果要做改变,请使用深拷贝重新new一个对象

映射map

 Map<Integer, EmployeeInfoDto> userInfoMap = userInfoList.stream().
              collect(Collectors.toMap(EmployeeInfoDto::getEId, account -> account, (key1, key2) -> key2));

分组(GroupBy)

 Map<Integer, List<EmployeeInfoDto>> userInfoMap = userInfoList.stream().
 collect(Collectors.groupingBy(EmployeeInfoDto::getEId));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值