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));