zoukankan      html  css  js  c++  java
  • 实现对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 */
        }
    
    }
    
  • 相关阅读:
    java 3大特性
    注解@JsonIgnore和注解@JsonIgnoreProperties
    spring bean 的介绍
    Spring注解的实现原理和Spring常用注解介绍
    Spring中 @Component @Controller @Repository @Service 注解
    Java Collection集合中List,Set,Queue以及Map的使用
    Spring Security PasswordEncoder 密码校验和密码加密
    java中System.out.print()与System.out.println()与System.out.printf()的差别
    Arrays.fill 数组填充工具类
    Hashmap与Hashset的区别
  • 原文地址:https://www.cnblogs.com/xbq8080/p/12606974.html
Copyright © 2011-2022 走看看