zoukankan      html  css  js  c++  java
  • 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的值不同。

     
  • 相关阅读:
    我容易么?
    意译和音译
    请教博客园高手:msn老是掉线的问题
    超市里最安全的食品
    两类人
    只要牵了手,就请不要轻易的说分手
    Palm Treo 650 .VS. Dopod P800
    强烈推荐一健康食品:紫红薯
    年底三篇
    奶奶,走好!
  • 原文地址:https://www.cnblogs.com/daixiaotian/p/7059484.html
Copyright © 2011-2022 走看看