【无标题】jdk8流式编程

jdk8的流式编程极大的简化了我们的代码,在某些时候还能提高代码的性能。它能做的事情有很多,例如分类、排序、list转化set或map等。
1.filter过滤

userIdListFinal = userIdListA.stream().filter(userIdListB::contains).collect(Collectors.toList());

这里的示例是用来取userIdListA和userIdListB的交集的

2.Comparator排序

sopTodoListVOS = sopTodoListVOS.stream().sorted(Comparator.comparing(SopTodoListVO::getApproveTime)).collect(Collectors.toList());

这里和Java中的Comparator排序是一样的,但是这种方式相对整洁
有时候会有空值的情况,需要加一个Comparator.nullsLast
recommendCompanyVOS=recommendCompanyVOS.stream().sorted(Comparator.comparing(RecommendCompanyVO::getBoothId,
Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());

3.分组

Map<String, List<SopTodoListVO>> collect = list.stream().collect(Collectors.groupingBy(SopTodoListVO::getApprovalId));

Map<String, List<CustomsClearanceOutputDto>> map = list.stream().collect(Collectors.groupingBy(data -> format("{0}#{1}", data.getModel(), data.getType())));
    // 按多字段分组
    public static String format(String value, Object... paras) {
    
    
        return MessageFormat.format(value, paras);
    }


这里根据ApprovalId进行分组的

4.转为map

Map<Long, String>crtTypeMap = contractTypeDao.selectAll().stream().collect(Collectors.toMap(ContractType::getId, ContractType::getName));

这里是利用Collectors.toMap将其转换的,

Set collect = sopTodoLists.stream().collect(Collectors.toSet());

5.转为set

Set<Long> userIdListB userIdListB = userListByGroupId.stream().map(BaseUserInfoVO::getId).collect(Collectors.toSet());

6.转为list

List<Long> cartIds = list.stream().map(CartItemDO::getId).collect(Collectors.toList());

猜你喜欢

转载自blog.csdn.net/weixin_45933454/article/details/126947449