[Java] Lambda expression operations on collections

Lambda expression to deal with collection

With the new Lambda expression in Java 8, we can use simple and efficient code to process List.

1. Traverse

 public static void main(String[] args) {
    
    
        List<User> 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());
        });

    }

operation result:

img

2. Convert list to Map

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

        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<Long,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1, k2)->k1));
        System.out.println(userMap);

    }

operation result:

img

3. Group List: Object elements in List are grouped by a certain attribute

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

        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<String, List<User>> groupBy = userList.stream().collect(Collectors.groupingBy(User::getName));
        System.out.println(groupBy);

    }

operation result:

img

4. Filtering: Filter out eligible elements from the collection

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

        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<User> filterList = userList.stream().filter(user -> user.getName().equals("张三")).collect(Collectors.toList());
        filterList.stream().forEach(user ->{
    
    
            System.out.println(user.getName());
        });

    }

operation result:

img

5. Sum: sum the data in the collection according to a certain attribute

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

        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);

    }

operation result:

img

6. Convert from List to Map, with one-to-one correspondence between key and value

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

        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);

        Map<Long/*Id*/,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, user -> user));
        System.out.println("toMap:" + JSONArray.toJSONString(userMap));

    }

operation result:

img

Guess you like

Origin blog.csdn.net/qq_42380734/article/details/105373696