初识Lambda — 常见使用场景详解

什么是Lambda

  1. Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性;

  2. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中);

  3. 使用 Lambda 表达式可以使代码变的更加简洁紧凑。


Lambda基本语法:

(parameters) -> expression
或
(parameters) ->{ statements; } 


常见使用场景:

  • 新建User实体类
public class User {
    private String userId;
    private Integer age;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId='" + userId + '\'' +
                ", age=" + age +
                '}';
    }
}
        //新建一个用户集合
        List userList = new ArrayList<>();
        //遍历插入10个user对象
        for (int i = 0; i <= 10; i++) {
            User user = new User();
            user.setUserId(String.valueOf(i));
            user.setAge(i);
            userList.add(user);
        }
        //遍历输出age
        userList.forEach(user -> System.out.print("age:" + user.getAge()+" "));
        //获取userId的集合
        //传统方式
        List oldMethod = new ArrayList<>();
        for (User user : userList) {
            oldMethod.add(user.getUserId());
        }
        //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        System.out.println(oldMethod);

        //使用lambda结合stream
        //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        List newMethod = userList.stream().map(user -> user.getUserId()).collect(Collectors.toList());
        System.out.println(newMethod);
        //取出userId大于5的集合
        List list = newMethod.stream().filter(x -> Integer.valueOf(x) > 5).collect(Collectors.toList());
        //[6, 7, 8, 9, 10]
        System.out.println(list);
         //按升序排序获取age的前两位
        List userSortList = userList
                .stream()
                .sorted(Comparator.comparing(User::getAge))
                .limit(2)
                .collect(Collectors.toList());
        //[User{userId='0', age=0}, User{userId='1', age=1}]
        System.out.println(userSortList.toString());

        //按降序排序获取age的前两位
        List userSortList2 = userList
                .stream()
                .sorted(Comparator.comparing(User::getAge).reversed())
                .limit(2)
                .collect(Collectors.toList());
        //[User{userId='10', age=10}, User{userId='9', age=9}]
        System.out.println(userSortList2.toString());


小小总结

正如你所看到的,熟练使用Lambda表达式后,这不仅让代码变的简单、而且可读,最重要的是代码量也随之减少很多,代码也更加优雅了。

你可能感兴趣的:(初识Lambda — 常见使用场景详解)