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);
添加回答
举报