讨教各位高手
本人有一组数据格式是这样的
{“title1″:”100″,”title2″:”100″,”title1″:”200”}
之前用map保存,发现key值重复的数据被覆盖了;
后来查过一圈资料后用IdentityHashMap试了一下,结果变成了:
{“title1″:”100″,”200″,”title2″:”100”} 不符合格式要求
讨教一下这种情况应该怎么存储和处理这组数据
本人有一组数据格式是这样的
{“title1″:”100″,”title2″:”100″,”title1″:”200”}
之前用map保存,发现key值重复的数据被覆盖了;
后来查过一圈资料后用IdentityHashMap试了一下,结果变成了:
{“title1″:”100″,”200″,”title2″:”100”} 不符合格式要求
讨教一下这种情况应该怎么存储和处理这组数据
解决方案
10
首先你这样的数据用这种格式封装就有问题,应该是数组形式的[{“title1″:”100”},{“title2″:”100”},{“title1″:”200”}]
10
你采用了什么方法遍历.是不是遍历的问题?
for(Entry<String, String > aEntry : map.entrySet()){ System.out.println(aEntry.getKey()); System.out.println(aEntry.getValue()); }
本人采用这种方法遍历结果很正常啊。
20
题主为什么不把代码发出来呢,
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中的数据有没有问题,假如没有问题就就是页面展示上有瑕疵了,根据具体情况采用不同的解决方法。