qq_41825418 2021-10-25 16:47 采纳率: 60%
浏览 62
已结题

List:数据转换,分组返回给前端

这是拿到的数据:

[
    {
        "grade":1,
        "taskName":"2021年年终考评"
    },
    {
        "grade":1,
        "taskName":"test"
    },
    {
        "grade":2,
        "taskName":"test"
    },
    {
        "grade":3,
        "taskName":"test"
    },
    {
        "grade":1,
        "taskName":"test"
    },
    {
        "grade":2,
        "taskName":"test"
    },
    {
        "grade":3,
        "taskName":"test"
    }
]

目标返回参考数据:

source: [
        ['taskName', '2021年年终考评', 'test'],
        ['A', 1, 2],
        ['B', 0, 2],
        ['B+', 0, 2],
        ['C', 0, 0]
      ]

1:A 2:B 3:B+ 4:C
每列的数字都是对应上面的名称的grade个数
有什么好的思路嘛!

  • 写回答

2条回答 默认 最新

  • hezhaocan 2021-10-25 18:33
    关注
    
     public static void main(String[] args) {
            String json = "[\n" +
                    "    {\n" +
                    "        \"grade\":1,\n" +
                    "        \"taskName\":\"2021年年终考评\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":1,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":2,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":3,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":1,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":2,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"grade\":3,\n" +
                    "        \"taskName\":\"test\"\n" +
                    "    }\n" +
                    "]\n" +
                    " ";
    
    
            List<JSONObject> jsonObjects = JSONObject.parseArray(json, JSONObject.class);
            HashMap<String, ArrayList<Integer>> temp = new HashMap<>();
    
            Set<String> firstLine = new LinkedHashSet<>();
            firstLine.add("TaskName");
            jsonObjects.stream().forEach(o -> {
                String taskName = o.getString("taskName");
                temp.put(taskName, temp.get(taskName));
                ArrayList<Integer> integers = temp.get(taskName);
                if(CollectionUtils.isEmpty(integers)){
                    integers = Lists.newArrayList();
                    integers.add(0);integers.add(0);integers.add(0);integers.add(0);
                    temp.put(taskName,integers);
                }
                int grade = o.getIntValue("grade");
                integers.set(grade-1,integers.get(grade-1)+1);
            });
            ArrayList<ArrayList<String>> result = new ArrayList<>();
            ArrayList<String> firstColumn = new ArrayList<>();
            firstColumn.add("taskName");
            firstColumn.add("A");
            firstColumn.add("B");
            firstColumn.add("B+");
            firstColumn.add("C");
            Set<String> strings = temp.keySet();
            for (int i = 0; i < firstColumn.size(); i++) {
                ArrayList<String> temm = new ArrayList<>();
                String s = firstColumn.get(i);
                temm.add(s);
                if(s.equals("taskName")){
                    temm.addAll(strings);
                }else {
                    for (String s1 : strings) {
                        ArrayList<Integer> integers = temp.get(s1);
                        temm.add(String.valueOf(integers.get(i - 1)));
                    }
                }
                result.add(temm);
            }
    
            System.out.println("result = " + result);
        }
    

    我的思路,仅做参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月3日
  • 已采纳回答 10月26日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制