jdk1.8 lambda表达式demo代码

        //测试数据写入
        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()));

 

转载于:https://my.oschina.net/u/1251858/blog/1799013

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值