問題描述:在進行mysql查詢必要字段後,須要根據id進行es其它數據字段的查詢拼接。使用HashMap以id爲key 以查詢過來的數據值爲value。前端
代碼以下:mysql
1 Map<String,Integer> map = null; 2 if(result != null && result.containsKey("aggregations")){ 3 map = new HashMap<String,Integer>(); 4 JSONTool tool = new JSONTool(); 5 JSONArray buckets = tool.getJSONArray(result, "aggregations.px0.buckets"); 6 if(buckets != null){ 7 for(int i=0; i<buckets.size(); i++){ 8 String key = buckets.getJSONObject(i).getString("key"); 9 int value = buckets.getJSONObject(i).getJSONObject("num").getIntValue("value"); 10 map.put(key, value); 11 } 12 } 13 } 14 15 //拼裝其它獲取的字段 16 if(map != null && !map.isEmpty()){ 17 it = list.iterator(); 18 while(it.hasNext()){ 19 Model mo = it.next(); 20 mo.setNum(map.get(mo .getId())); 21 } 22 }
說明:mo.getId()返回的數據類型爲Integersql
前端拼接數據時,發現沒有num字段。debug發現是map.get(mo.getId());返回的居然是nullspa
因而,將debug
mo.setNum(map.get(mo .getId()));
改成code
mo.setNum(map.get("" + mo .getId()));
總結,原來hashMap是根據key的hash值去找value的,數據類型不一樣可能hash的值不一樣。blog