• 实现对List里面的对象元素,以某个属性来分组


    实现对List里面的对象元素,以某个属性来分组。

    代码实现:

    import com.alibaba.fastjson.JSON;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    public class ListGroupTest {
    
        static List<User> userList = new ArrayList<>();
    
        public static void main(String[] args) {
    
            /* 方式一:构建list,map,来实现对List,按某个元素分组 (当分组的元素存在为null时,可使用) */
            Map<Integer, List<User>> groupBy2 = new HashMap<>();
            List<User> tempList = null;
            for(User user : userList) {
                if(groupBy2.containsKey(user.getSex())) {
                    tempList = groupBy2.get(user.getSex());
                    tempList.add(user);
                } else {
                    // 否则,第一次先构造一个list,在存入map
                    tempList = new ArrayList<>();
                    tempList.add(user);
                    groupBy2.put(user.getSex(), tempList);
                }
            }
            System.out.println("groupBy2: " + JSON.toJSONString(groupBy2));
    
            /* 方式二:使用java8 来实现对List,按某个元素分组 (当分组的元素都不为null时,可使用,否则,会报空指针) */
            Map<Integer, List<User>> groupBy = userList.stream().collect(Collectors.groupingBy(User::getSex));
            System.out.println("groupBy: " + JSON.toJSONString(groupBy));
        }
    
        static {
            User user = new User();
            user.setId(1L);
            user.setName("张三");
            user.setSex(1);
            userList.add(user);
    
            user = new User();
            user.setId(2L);
            user.setName("李四");
            user.setSex(0);
            userList.add(user);
    
            user = new User();
            user.setId(3L);
            user.setName("王五");
            user.setSex(1);
            userList.add(user);
    
            user = new User();
            user.setId(4L);
            user.setName("赵六");
            user.setSex(0);
            userList.add(user);
    
            user = new User();
            user.setId(5L);
            user.setName("小七");
            user.setSex(0);
            userList.add(user);
    
            /* 将分组的字段 设置为null */
            user = new User();
            user.setId(6L);
            user.setName("大巴");
            user.setSex(null);
            userList.add(user);
        }
    
    
        static class User {
    
            private Long id;
            private String name;
            private Integer sex;
            private String remark;
    
            /* 省略 get set */
        }
    
    }
    
  • 相关阅读:
    NOIP前做题记录
    AtCoder Grand Contest 021题解
    AtCoder Grand Contest 020 题解
    CODE FESTIVAL 2017 Final题解
    Code Chef October Challenge 2019题解
    5.20 校内模拟
    5.19 湖南师大附中省选模拟1
    NOI2016 循环之美
    博弈复习
    5.18 省选模拟
  • 原文地址:https://www.cnblogs.com/xbq8080/p/12606974.html
Copyright © 2020-2023  润新知