有一串
JSONArray =
[{“id”:”1”,”boss”:”1”},
{“id”:”2”,”boss”:”1”},
{“id”:”3”,”boss”:”1”},
{“id”:”4”,”boss”:”2”},
{“id”:”5”,”boss”:”2”},
{“id”:”6”,”boss”:”3”}]
我想把它变为Map集合
结果为:map = { 1=[1,2,3] , 2=[4,5] , 3=[6] }
能请求给一点思路吗?用过很多方法,下标不好判断,
//用的是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);
}
key是String,value是List,就好了
如果能新建一个与这个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);