lambda的应用

包唯
2023-12-01

1.配合mybatis-plus使用  

1.1 数据的操作

 lambdaQuery.select(UserCarBinding::getRegistrationId) //select值
                .eq(UserCarBinding::getRegistrationId, userId)
                .eq(UserCarBinding::getDelFlag, ConstantFactory.DEL_FLAG.UN_DELETE)
                .in(UserCarBinding::getVerifyStatus, verifyStatus) 
                .orderByDesc(UserCarBinding::getUpdateDate);
        List<LicensePlateVO> plateVOList = userCarBindingMapper.selectList(lambdaQuery)

2.配合list使用

2.1 list排序

 Subject subject1 = new Subject("语文", 90.0);
 Subject subject2 = new Subject("语文", 88.0);
 List<Subject> subjectList = new ArrayList<>();
 subjectList.add(subject1);
 subjectList.add(subject2);
 
 //1 排序生效,使用stream和collect  原集合不变
        subjectListNew = subjectList.stream().sorted((s1, s2) -> s1.getGrade().compareTo(s2.getGrade())).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(subjectListNew));
        //[{"grade":90.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":94.0,"name":"语文"}]


//2 排序生效,不使用stream和collect
  subjectList.sort((s1, s2) -> s1.getGrade().compareTo(s2.getGrade()));

2.2 排序

1. 查找list符合条件的数据

A a = bList().stream().filter(b -> "小明".equals(b.getName())).findAny().get();
这个方法并不是找得到就返回,找不到就不做处理,而是找不到直接抛异常了。

A a =bList().stream().filter(b->"小明".equals(b.getName())).findAny().orElse(null);
1
orElse()中可以塞默认值。如果找不到就会返回orElse中你自己设置的默认值。

2. 查找符合条件的第一个:
 Optional<A> firstA= AList.stream() 
                          .filter(a -> "小明".equals(a.getUserName())) 
                          .findFirst();
ifPresent 用于对过滤出的数据如果存在。如果经过过滤条件后,有数据的话就可以进行修改。
 Optional<A> firstA= AList.stream() 
                          .filter(a -> "小明".equals(a.getUserName())) 
                          .findFirst()
                          .ifPresent(a -> {
                              a.setUserName("明明");
                          })

3. 过滤list返回 符合条件的list
 List<A> aList= AList.stream() 
                      .filter(a -> "小明".equals(a.getUserName())) 
                      .collect(Collectors.toList());

4. //map(A::getId) 中的 A 为实体类 
List<Long> idList = AList.stream()
                         .map(A::getId)
                         .collect(Collectors.toList());

5. list返回map
//A 为实体类
Map<Long, A> map = AList.stream()
                        .filter(a-> StringUtil.isNotEmpty(a.getName()))
                        .collect(Collectors.toMap(A::getId, a -> a));

 

 类似资料: