美文网首页
java 对json中list集合进行分组归类

java 对json中list集合进行分组归类

作者: maiduoduo | 来源:发表于2020-07-22 16:38 被阅读0次

    有时候集合类型json数据,需要进一步按照类型进行分组加工,下面提供两种分组方式。

    二、HashMap遍历分组

    分组代码:

    {
          ...
          ...
          ...
          ...
              //定义分组集合Map
              private Map<String, List<HomeEntity.DataBean>> groupMap = new HashMap<>();
    
              //遍历原始数据,根据code值进行分组
              for (HomeEntity.DataBean h : data) {
                    String categoryCode = h.getCode();
                    if (groupMap.containsKey(categoryCode)){
                        List<HomeEntity.DataBean> list = groupMap.get(categoryCode);
                        list.add(h);
                        groupMap.put(categoryCode, list);
                    }else {
                        List<HomeEntity.DataBean> groupItemList = new ArrayList<>();
                        groupItemList.add(h);
                        groupMap.put(categoryCode, groupItemList );
              }
    
         ...
          ...
          ...
          ...
    }
    
    

    分组结果

      {"103":["17","19","21","23","25","27","29","31"],"100":["16","18","20","22","24","26","28","30"]}
    

    二、jdk1.8 使用stream流进行分类

    分组代码:

    import com.alibaba.fastjson.JSON;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * @author czw
     */
    public class Foo{
        private String name;
        private String type;
        private Double typeValue;
        private Integer count;
    
        public Foo(String name, String type, Double typeValue, Integer count) {
            this.name = name;
            this.type = type;
            this.typeValue = typeValue;
            this.count = count;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public Double getTypeValue() {
            return typeValue;
        }
    
        public void setTypeValue(Double typeValue) {
            this.typeValue = typeValue;
        }
    
        public Integer getCount() {
            return count;
        }
    
        public void setCount(Integer count) {
            this.count = count;
        }
    
        @Override
        public String toString() {
            return "Foo{" +
                    "name='" + name + '\'' +
                    ", type='" + type + '\'' +
                    ", typeValue=" + typeValue +
                    ", count=" + count +
                    '}';
        }
    
        public static void main(String[] args) {
            List<Foo> fooList = new ArrayList<Foo>();
            fooList.add(new Foo("A","san",1.0,2))  ;
            fooList.add( new Foo("A","nas",13.0,1))  ;
            fooList.add(new Foo("B","san",112.0,3))  ;
            fooList.add(new Foo("C","san",43.0,5))  ;
            fooList.add(new Foo("B","nas",77.0,7))  ;
            List<List<Foo>> groupList = new ArrayList<>();
            fooList.stream()
                    .collect(Collectors.groupingBy(Foo::getName,Collectors.toList()))
                    .forEach((name,fooListByName)->{
                        groupList.add(fooListByName);
                    });
    
            System.out.println(JSON.toJSONString(groupList));
        }
    }
    

    分组结果

    [
        [{
            "count": 2,
            "name": "A",
            "type": "san",
            "typeValue": 1
        }, {
            "count": 1,
            "name": "A",
            "type": "nas",
            "typeValue": 13
        }],
        [{
            "count": 3,
            "name": "B",
            "type": "san",
            "typeValue": 112
        }, {
            "count": 7,
            "name": "B",
            "type": "nas",
            "typeValue": 77
        }],
        [{
            "count": 5,
            "name": "C",
            "type": "san",
            "typeValue": 43
        }]
    ]
    

    相关文章

      网友评论

          本文标题:java 对json中list集合进行分组归类

          本文链接:https://www.haomeiwen.com/subject/nnltlktx.html