java中lambda的使用

1、实体类(Student)

@Data
public class Student {
    private String id;
    
    private String name;
    
    private String subject;
    
    private double score;
}

2、获取集合中所有的name(map的使用)

public List<String> getName(List<Student> students){
    List<String> names = students.stream().map(Student::getName).collect(Collectors.toList());
    return names;
}

3、对所有学生按照学科进行分组(groupingBy的使用)

public Map<String,List<Student>> studentGroup(List<Student> students){
        Map<String,List<Student>> subjectMap = students.stream().collect(Collectors.groupingBy(Student::getSubject));
        return subjectMap;
    }

4、按照条件对集合进行过滤(filter的使用)

  // 过滤掉分数低于60分的学生
  students.removeIf(stu -> stu.getScore() < 60);
  List<Student> filters = students.stream().filter(stu -> stu.getScore() >= 60).collect(Collectors.toList());

注:上面2中方式效果一样

5、lambda表达式作为入参

比如要对10个学生的分数求和

 private double scoreTotal(List<Student> students, ToDoubleFunction<? super Student> mapper) {
      return result.stream().mapToDouble(mapper).sum();
 }
public double stuScore(){
   List<Student> students = sutdentServiceImpl.getAllStus();
   double  stuScore = scoreTotal(students,Student::getScore);
   return stuScore;
}

6、removeIf结合lambda的使用

 List<Student> students = sutdentServiceImpl.getAllStus();
 // 过滤小于等于18岁的学生
 students.removeIf(stu->stu.age<=18);

7、将map转成string

我们平常会有这样的需求,后端在请求第三方接口,如果链接后面跟参数,需要在链接后面拼接参数,但我们的参数一般放在map里面,下面就是用lambda表达式操作map转String

    Map<String,Integer> map = new HashMap<>();
        map.put("aa",11);
        map.put("aa1",11);
        map.put("aa2",11);
        map.put("aa3",11);
        map.put("aa4",11);
        map.put("bb",11);
        map.put("bb1",11);
        map.put("bb3",11);
        String collect = map.entrySet().stream()
                .filter(entry -> entry.getKey().contains("aa"))
                .map(entry -> entry.getKey() + "=" + entry.getValue()).collect(Collectors.joining("&"));

输出结果

aa=11&aa1=11&aa3=11&aa2=11&aa4=11

上面的代码,总共分为3步
①对map通过key值进行过滤:entry.getKey().contains("aa")
②拼接单个键值对:entry.getKey() + "=" + entry.getValue()
③键值对之间插入&:Collectors.joining("&")

8.1、实体类属性组合成map

Map<String, String> fieldMap = stuList.stream()
                .collect(Collectors.toMap(Stu::getId, Stu::getName));

8.2 实体类属性&对象组成map

   LogEntity log = new LogEntity();
   log.setId("1");
   log.setIp("baidu.com");

   LogEntity log1 = new LogEntity();
   log1.setId("2");
   log1.setIp("merit.com");

   List<LogEntity> list = Lists.newArrayList();
   list.add(log);
   list.add(log1);
   Map<String, LogEntity> logMap = list.stream().collect(Collectors.toMap(LogEntity::getId, LogEntity::getLogEntity));
        
  • 注:上面需要在实体类中创建一个类方法
    public static LogEntity getLogEntity(LogEntity logEntity) {
        return logEntity;
    }

9.1、对象列表,通过某一指定元素特定顺序进行排序

List<String> idList = Arrays.asList(ids.split(","));
List<StuInfo> stus = stuDao.findAllById();
stus.sort(Comparator.comparingInt(o->idList.indexOf(o.getId()));

9.2、基本数据类型列表,数据排序

 List<Integer> sorts = Lists.newArrayList();
 sorts.sort((a1,a2)->a2-a1);

10、指定属性进行去重

tempManagers = tempManagers.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TaskTempEntity::getTempId))), ArrayList::new));
     

11、List<String>转List<Long>

 List<String> idList = Arrays.asList(ids.split(","));
 List<Long> longList = idList.stream().map(Long::parseLong).collect(Collectors.toList());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值