jdk1.8 lambda expression demo code

        //测试数据写入
        List<User2> lstUsersAll = new ArrayList<>();
        User2 user2 = new User2("张三", 168.4, 20);
        lstUsersAll.add(user2);
        user2 = new User2("小明", 170d, 17);
        lstUsersAll.add(user2);
        user2 = new User2("小红", 162.2, 22);
        lstUsersAll.add(user2);

        //把list里满足某个条件的成员输出到新的list
        //输出用户名等于张三的
        List<User2> lstUsers = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).collect(Collectors.toList());

        //以上代码,如果用普通的for循环实现,需要4行代码,lambda精简了75%代码行数
        List<User2> lstUsers1 = new ArrayList<>();
        for (User2 users : lstUsersAll) {
            if ("张三".equals(users.getName())) {
                lstUsers1.add(users);
            }
        }

        //把list里满足某个条件的成员输出,且只输出一个(用于业务逻辑只有一个结果的情况,省去了获取list后还要get(0))
        //输出用户名等于张三的
        User2 users = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).findFirst().orElse(null);

        //把list里满足某个条件的成员,只输出某个属性(变量)
        //输出用户名等于张三的用户名
        List<String> lstName = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).map(User2::getName).collect(Collectors.toList());

        //统计name属性的所有唯一值,并只输出name属性到List
        List<String> lstName2 = lstUsersAll.stream().map(User2::getName).distinct().collect(Collectors.toList());

        //排序
        //以下是对age排升序
        List<User2> lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge)).collect(Collectors.toList());
        //以下是对age排倒序,加了reversed方法就是倒序
        lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).reversed()).collect(Collectors.toList());
        //多属性排序,从第二个排序属性开始使用thenComparing
        lstUsersSort = lstUsersAll.stream().sorted(Comparator.comparing(User2::getAge).thenComparing(User2::getHeight)).collect(Collectors.toList());

        //删除
        //删除用户名等于张三的
        lstUsersAll.removeIf(t -> "张三".equals(t.getName()));

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325983188&siteId=291194637
Recommended