美文网首页Java
初识Lambda — 常见使用场景详解

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

作者: 小吴不睡觉 | 来源:发表于2020-05-29 15:34 被阅读0次

    什么是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<User> 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<String> 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<String> newMethod = userList.stream().map(user -> user.getUserId()).collect(Collectors.toList());
            System.out.println(newMethod);
    
            //取出userId大于5的集合
            List<String> list = newMethod.stream().filter(x -> Integer.valueOf(x) > 5).collect(Collectors.toList());
            //[6, 7, 8, 9, 10]
            System.out.println(list);
    
             //按升序排序获取age的前两位
            List<User> 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<User> 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 — 常见使用场景详解

        本文链接:https://www.haomeiwen.com/subject/xddaahtx.html