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的值不同。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 开箱你的 AI 语音女友「GitHub 热点速览」
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(二):用.NET IoT库
· 几个自学项目的通病,别因为它们浪费了时间!
· C#钩子(Hook) 捕获键盘鼠标所有事件 - 5分钟没有操作,自动关闭 Form 窗体
· 特斯拉CEO埃隆.马斯克的五步工作法,怎么提高工程效率加速产品开发?