假如有一个JSONArray(里面是JSONObject)数据,如图:
我想要分组得到数据
比如:得到一个Map<String, Map<String, JSONObject>>
分析:相同code下的以time为键,json为值的map
键是字符串格式的 code,
值是map<String, JSONObject>
这个map的键是time, 值是对应code和time的数据
请求大佬给思路,最后附带代码,谢谢!!!
最好能用stream流实现
先按照code分组,再把每个组转换成map。
代码的话,我不怎么会Java,大概就是这样
var map = jsonArray.stream()
.collect(Collectors.groupingBy(
o->o.getString("code"),
Collectors.toMap(o->o.getString("time"), o->o));
我开始也是想要stream流,但是发现抱错
/private int id;
private String name;
private int age;/
List<Student> students = Arrays.asList(new Student(1, "12", 18),
new Student(1, "12", 18),
new Student(2, "12", 18),
new Student(1, "12", 17));
students.stream().collect(Collectors.groupingBy(s->s.getId(), Collections.toMap(s->s.getAge(), s->s)));
@lanto_liang: 你这个student的例子。。。Collections.toMap这里写错了好吧,Collectors.toMap才对
@拓拓:
运行报错了,亲!求解决 -
@lanto_liang: 很明显啊,按照ID分组,ID为1的里面有两个年龄18的,创建set肯定冲突了