代码如下:
IdentityHashMap<String,String> maps = new IdentityHashMap<>();
maps.put(new StringBuilder("张三").toString(),"123");
maps.put(new StringBuilder("李四").toString(),"1235");
maps.put(new StringBuilder("王五").toString(),"123434");
maps.put(new StringBuilder("赵柳").toString(),"胜多负少会计法");
maps.put(new StringBuilder("张三").toString(),"232342353");
return maps;
我想通过不去重复的map,将同样key,不同value的map集合返回给前端,但是在返回的途中出现了问题,当我使用浏览器直接访问网址时,返回的是我想要的集合,但是通过potMan和实际页面调用时,返回的值确实进过去重后的map。
Service截图:从下面的截图中可以看到,maps中已经存储进入了五个不同的键值(请忽略StringBuilder,经过测试,new String,String.toString返回值都和上面描述的情况一致)

Controller: 依旧有五个值

下面会放出postMan和页面直接调用的情况。
postMan:这个张三的值会变动,可能是123,也可能是232342353

网页截图:

以上就是问题原因及现象。
-------------------------- 2018年9月12日 更新 -------------------------
确认应该是json会自带去重效果,即一串json中不会拥有重复的key。
解决方式:将返回值用数组的形式,或者将key值修改为不重复。
探讨了在Java中使用IdentityHashMap存储数据时遇到的问题,当返回含有重复键的Map时,不同请求方式导致返回结果不一致的现象。具体表现为直接访问URL时能够正确展示所有数据,而使用postMan或实际页面请求时,重复键的数据被覆盖。
173万+

被折叠的 条评论
为什么被折叠?



