3 回答
TA贡献1836条经验 获得超4个赞
//用的是alibaba的fastjson jar包
public static void main(String [] args){
String test = "[{\"id\":\"1\",\"boss\":\"1\"},\n" +
"{\"id\":\"2\",\"boss\":\"1\"},\n" +
"{\"id\":\"3\",\"boss\":\"1\"},\n" +
"{\"id\":\"4\",\"boss\":\"2\"},\n" +
"{\"id\":\"5\",\"boss\":\"2\"},\n" +
"{\"id\":\"6\",\"boss\":\"3\"}]";
JSONArray jsonArray = JSONArray.parseArray(test);
System.out.println("初始值:"+jsonArray);
Map> map = new HashMap<>();
for(int i= 0;i JSONObject entity = (JSONObject) jsonArray.get(i);
String boss = entity.get("boss").toString();
String id = entity.get("id").toString();
if(map.get(boss)!=null){
map.get(boss).add(id);
}else{
List list = new LinkedList();
list.add(id);
map.put(boss,list);
}
}
System.out.println("处理后:"+map);
}
TA贡献1829条经验 获得超4个赞
如果能新建一个与这个jsonobject对应的类就好了 我这就新建了一个包含id和boss属性的类 代码贴给你看
Map<Integer, List<Boss>> collect = bosses.stream().collect(Collectors.groupingBy(t -> t.getBoss()));
Map<Integer,Integer[]> result = Maps.newHashMap();
for (Map.Entry<Integer, List<Boss>> entry : collect.entrySet()) {
result.put(entry.getKey(),transform(entry.getValue()));
}
//result就是最后结果了
for (Map.Entry<Integer, Integer[]> entry : result.entrySet()) {
System.out.print(entry.getKey() + ":");
for (Integer integer : entry.getValue()) {
System.out.print(integer + ",");
}
System.out.println();
}transform方法
List<Integer> collect = entry.stream().map(Boss::getBoss).collect(Collectors.toList()); Integer[] integers = new Integer[collect.size()]; return collect.toArray(integers);
添加回答
举报
