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

有一串
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] }
能请求给一点思路吗?用过很多方法,下标不好判断,


慕的地10843
浏览 567回答 3
3回答

HUH函数

//用的是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属性的类 代码贴给你看&nbsp;Map<Integer,&nbsp;List<Boss>>&nbsp;collect&nbsp;=&nbsp;bosses.stream().collect(Collectors.groupingBy(t&nbsp;->&nbsp;t.getBoss())); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<Integer,Integer[]>&nbsp;result&nbsp;=&nbsp;Maps.newHashMap(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Map.Entry<Integer,&nbsp;List<Boss>>&nbsp;entry&nbsp;:&nbsp;collect.entrySet())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(entry.getKey(),transform(entry.getValue())); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//result就是最后结果了 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Map.Entry<Integer,&nbsp;Integer[]>&nbsp;entry&nbsp;:&nbsp;result.entrySet())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(entry.getKey()&nbsp;+&nbsp;":"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Integer&nbsp;integer&nbsp;:&nbsp;entry.getValue())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(integer&nbsp;+&nbsp;","); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}transform方法List<Integer>&nbsp;collect&nbsp;=&nbsp;entry.stream().map(Boss::getBoss).collect(Collectors.toList()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer[]&nbsp;integers&nbsp;=&nbsp;new&nbsp;Integer[collect.size()]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;collect.toArray(integers);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java