java8新特性:利用Lambda处理List集合

2021-07-05 02:04

阅读:476

标签:color   分组   结果   str   tor   print   lis   inf   sum   

Java 8新增的Lambda表达式,我们可以用简洁高效的代码来处理List。

1、遍历

 public static void main(String[] args) {
        List userList = Lists.newArrayList();

        User user1 = new User(1L, "张三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);

        userList.stream().forEach(user ->{
            System.out.println(user.getName());
        });

    }

运行结果:

技术分享图片

2、list转为Map

 public static void main(String[] args) {
        List userList = Lists.newArrayList();//存放apple对象集合

        User user1 = new User(1L, "张三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);

        //ID为key,转为Map
        Map userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1, k2)->k1));
        System.out.println(userMap);

    }

运行结果:

技术分享图片

3、将List分组:List里面的对象元素,以某个属性来分组

  public static void main(String[] args) {
        List userList = Lists.newArrayList();//存放apple对象集合

        User user1 = new User(1L, "张三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "张三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //根据name来将userList分组
        Map> groupBy = userList.stream().collect(Collectors.groupingBy(User::getName));
        System.out.println(groupBy);

    }

运行结果:

技术分享图片

4、过滤:从集合中过滤出来符合条件的元素

 public static void main(String[] args) {
        List userList = Lists.newArrayList();//存放apple对象集合

        User user1 = new User(1L, "张三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "张三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //取出名字为张三的用户
        List filterList = userList.stream().filter(user -> user.getName().equals("张三")).collect(Collectors.toList());
        filterList.stream().forEach(user ->{
            System.out.println(user.getName());
        });

    }

运行结果:

技术分享图片

5、求和:将集合中的数据按照某个属性求和

 public static void main(String[] args) {
        List userList = Lists.newArrayList();//存放apple对象集合

        User user1 = new User(1L, "张三", 24);
        User user2 = new User(2L, "李四", 27);
        User user3 = new User(3L, "王五", 21);
        User user4 = new User(4L, "张三", 22);
        User user5 = new User(5L, "李四", 20);
        User user6 = new User(6L, "王五", 28);

        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        userList.add(user6);


        //取出名字为张三的用户
        int totalAge = userList.stream().mapToInt(User::getAge).sum();
        System.out.println("和:" + totalAge);

    }

运行结果:

技术分享图片

 

java8新特性:利用Lambda处理List集合

标签:color   分组   结果   str   tor   print   lis   inf   sum   

原文地址:https://www.cnblogs.com/JoeyWong/p/9600109.html


评论


亲,登录后才可以留言!