为了账号安全,请及时绑定邮箱和手机立即绑定

有对集合了解的大牛进来看看嘛,拜托了

有对集合了解的大牛进来看看嘛,拜托了

慕的地10843 2019-04-09 13:15:30
有一串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] }能请求给一点思路吗?用过很多方法,下标不好判断,
查看完整描述

3 回答

?
HUH函数

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);
}

查看完整回答
反对 回复 2019-05-14
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

key是String,value是List,就好了


查看完整回答
反对 回复 2019-05-14
?
浮云间

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);


查看完整回答
反对 回复 2019-05-14
  • 3 回答
  • 0 关注
  • 566 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号