Java8新特性——Lambda表达式应用场景

之前在学习Java8的新特性时,十分喜欢Lambda的简洁性,而真正地用以解决项目中的技术点时,更为之惊叹不已。现在有这样的需求:从由Project这个类组成的List中取出id和name组成对应的键值对。

有下面这样的实体类,简洁起见,将多余的字段和注解以及类的继承关系去除。

import java.util.Date;

/**
 * Created by Mollychin on 2018/3/3.
 */
public class Project{
  private int id;
  private String name;
  private Date createTime;
  //省略响应的getter和setter方法。
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

现有List<Project> allProjects = projectService.getAll();
要取得该list中项目状态为“Status.ENABLE”的项目的所有的id和name的键值对,若不采用lambda表达式,需要对该list进行循环、if判断等复杂操作。但一旦使用了Lambda表达式,嘿嘿,过程就显得相当简洁了。代码如下:

 Map<Long, String> nameMap = null;
 nameMap = allProjects.stream().filter(project -> Status.ENABLE.equals(project.getStatus()))
          .collect(Collectors
              .toMap(Project::getId, Project::getName, (value1, value2) -> value2));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值