map的键被覆盖了!

舞时尚 2012-06-20 06:11:00
我在使用map的时候键被后面的覆盖了,但是键的名字都不同!这是为什么??
...全文
208 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdojqy1122 2012-06-22
  • 打赏
  • 举报
回复
maplist=new ArrayList<Object[]>();
楼主应该这样写吧?感觉这个有问题先,其他的没仔细看。
吸尘器 2012-06-21
  • 打赏
  • 举报
回复
能把你的perlist里面的值贴出来看看吗,你那list里面应该是放的数组,而且数组似乎就第一个值能被用到了哈
Roy_zdc 2012-06-21
  • 打赏
  • 举报
回复
参考一下这个,估计对你有用
http://my.csdn.net/my/code/detail/2480
MiceRice 2012-06-21
  • 打赏
  • 举报
回复
总共只有6个对象?那么楼主方便告诉下,代码运行结果么?

for (int i = 0; i < perlist.size(); i++) {
Object[] object = (Object[]) perlist.get(i);
System.out.println("Get: " + object[0]);
if (map.containsKey(object[0])) {
((List<Object>) map.get(object[0])).add(object);
} else {
System.out.println("NewKey: " + object[0]);
maplist=new ArrayList<Object>();
maplist.add(object);
map.put((String)object[0], maplist);
}
}
System.out.println("MapSize: " + maplist.size());
舞时尚 2012-06-21
  • 打赏
  • 举报
回复
没有啊!
MiceRice 2012-06-21
  • 打赏
  • 举报
回复
你有无重载过 equals 方法?如果equals方法不当,就可能导致问题。
  • 打赏
  • 举报
回复

for (int i = 0; i < perlist.size(); i++) {
Object[] object = (Object[]) perlist.get(i);
if (map.containsKey(object[0])) {
((List<Object>) map.get(object[0])).add(object);
} else {
maplist=new ArrayList<Object>();
maplist.add(object);
map.put((String)object[0], maplist);
}
}
舞时尚 2012-06-21
  • 打赏
  • 举报
回复
有不同的人6个,但每次都有俩个人没看见!!
舞时尚 2012-06-21
  • 打赏
  • 举报
回复
偶认认真的检查了几遍!for (int i = 0; i < perlist.size(); i++) {
Object[] object = (Object[]) perlist.get(i);
if (map.containsKey(object[0])) {
((List<Object>) map.get(object[0])).add(object);
} else {
maplist=new ArrayList<Object>();
maplist.add(object);
map.put((String)object[0], maplist);
}
}
  • 打赏
  • 举报
回复
仔细看看哈
趙大叔 2012-06-21
  • 打赏
  • 举报
回复
三楼说的对啊……楼主仔细检查下呗
悠忧虫 2012-06-20
  • 打赏
  • 举报
回复
1.两个key的hashCode是不是相同
2.使用equals比较一下两个key,是否返回true
淡定的峰哥 2012-06-20
  • 打赏
  • 举报
回复

HashMap map = ...;
Object key =...;
Object value = ...;
Object o = map.put(key, value);
if (o != null)
{
throw new Exception("键值重复"+key);
}

sdojqy1122 2012-06-20
  • 打赏
  • 举报
回复
同上,键值必须重复,楼主你眼花了。。
MiceRice 2012-06-20
  • 打赏
  • 举报
回复
必然是键值重复了。

你可以自己包装下HashMap,然后在put这里先做个检查,如果发现重复键就throw RuntimeException,帮助定位问题。
伯恩dadi 2012-06-20
  • 打赏
  • 举报
回复
新new一个试试!

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧