关于Map中key值无法重复的问题

J2EE 码拜 4年前 (2017-05-01) 969次浏览
讨教各位高手
本人有一组数据格式是这样的
{“title1″:”100″,”title2″:”100″,”title1″:”200”}
之前用map保存,发现key值重复的数据被覆盖了;
后来查过一圈资料后用IdentityHashMap试了一下,结果变成了:
{“title1″:”100″,”200″,”title2″:”100”}   不符合格式要求
讨教一下这种情况应该怎么存储和处理这组数据
解决方案

10

引用:

讨教各位高手
本人有一组数据格式是这样的
{“title1″:”100″,”title2″:”100″,”title1″:”200”}
之前用map保存,发现key值重复的数据被覆盖了;
后来查过一圈资料后用IdentityHashMap试了一下,结果变成了:
{“title1″:”100″,”200″,”title2″:”100”}   不符合格式要求
讨教一下这种情况应该怎么存储和处理这组数据

首先你这样的数据用这种格式封装就有问题,应该是数组形式的[{“title1″:”100”},{“title2″:”100”},{“title1″:”200”}]

10

引用:
Quote: 引用:

题主为什么不把代码发出来呢,

map.put("a", "a");
        map.put("a", "b");

假如你是这种采用这种方式,本人测试一下只发生了覆盖现象,IdentityHashMap对key的判断是k1 == k2,字符串常量区的存在会使得两个Key相等发生覆盖。假如你想实现你说的应该使用

map.put(new String("a"), "a");
        map.put(new String("a"), "b");

,使得k1≠k2。

是的,本人确实是这样做的,但是最终加到array.add(map)之后,得到的结果是:
{“a”:”a”,”b”}
可是本人需要的结果是{“a”:”a”,”a”:”b”}

你采用了什么方法遍历.是不是遍历的问题?

for(Entry<String, String > aEntry : map.entrySet()){
            System.out.println(aEntry.getKey());
            System.out.println(aEntry.getValue());
        }

本人采用这种方法遍历结果很正常啊。

20

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

题主为什么不把代码发出来呢,

map.put("a", "a");
        map.put("a", "b");

假如你是这种采用这种方式,本人测试一下只发生了覆盖现象,IdentityHashMap对key的判断是k1 == k2,字符串常量区的存在会使得两个Key相等发生覆盖。假如你想实现你说的应该使用

map.put(new String("a"), "a");
        map.put(new String("a"), "b");

,使得k1≠k2。

是的,本人确实是这样做的,但是最终加到array.add(map)之后,得到的结果是:
{“a”:”a”,”b”}
可是本人需要的结果是{“a”:”a”,”a”:”b”}

你采用了什么方法遍历.是不是遍历的问题?

for(Entry<String, String > aEntry : map.entrySet()){
            System.out.println(aEntry.getKey());
            System.out.println(aEntry.getValue());
        }

本人采用这种方法遍历结果很正常啊。

本人是array.add(map) 后直接array.toString的。
最后array发送给前台展示

array是什么类型的?你可以在后台先做一下测试看map中的数据,array中的数据有没有问题,假如没有问题就就是页面展示上有瑕疵了,根据具体情况采用不同的解决方法。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于Map中key值无法重复的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)