Stream流的使用详解(持续更新)

1. 对比两List集合数据某些字段一样的情况下取值:

一般简单方式我们会使用双重for循环来处理判断数据取值(如下代码所示),但是数据量越大的情况下代码效率则越低,并且现在很多公司都会限制for循环层数所以更推荐stream将List转换为Map通过key取值

普通方式:

    for (DashboardsDO aDo : dashboardsDOS) {
            for (Target target : targetList) {
                if (aDo.getStoreCode().equals(target.getStoreCode())) {
                    代码逻辑等等
                }
            }
        }

stream:

        List list1= new ArrayList<>();
        List list2= new ArrayList<>();
        // 假设以上两个list都有数据我们通过学生姓名name与学号num进行取值
        Map studentMap=list2.stream()
.collect(Collectors.toMap(studentMSG-> studentMSG.getName() + "_" + studentMSG.getNum(), Function.identity()));
        // 此时我们将name与num作为map的key,值为当前实体类
        list1 = list1.stream()
                .map(student-> {
                    // 将list1的name与num作为key
                    String key = student.getName() + "_" + student.getNum();
                    // 通过key取值 
                    StudentMSG studentMSG = studentMap.get(key);
                    // 你的业务逻辑 
                    return student;
                }).collect(Collectors.toList());

你可能感兴趣的:(Java,java,stream流,list)