HashMap get()返回值問題


問題描述:在進行mysql查詢必要字段后,需要根據id進行es其它數據字段的查詢拼接。使用HashMap以id為key 以查詢過來的數據值為value。

代碼如下:

 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()返回的數據類型為Integer

 

前端拼接數據時,發現沒有num字段。debug發現是map.get(mo.getId());返回的竟然是null

於是,將

mo.setNum(map.get(mo .getId()));

改為

mo.setNum(map.get("" + mo .getId()));

總結,原來hashMap是根據key的hash值去找value的,數據類型不同可能hash的值不同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM