首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hashmap迭代器(keySet和entrySet)产生不同的结果

Hashmap迭代器(keySet和entrySet)产生不同的结果
EN

Stack Overflow用户
提问于 2014-04-11 15:08:19
回答 1查看 880关注 0票数 0

我正在尝试将Java Web Start应用程序从Java 1.6平台迁移到Java 1.7平台。服务器端采用Java1.6 (WebSphere应用服务器v8.5)。简单地说,应用程序是一个桌面应用程序,它使用http-client与服务器进行通信,并使用Java序列化进行数据传输。

我经历了一个奇怪的案例。如果我在Java1.6中运行该应用程序,则一切正常。当在Java1.7上运行的应用程序在调试模式下在服务器端发送数据值对象( DVO由其他HashMap和DVO组成)时,我可以看到DVO,但是当我想放入一个新对象(不是NULL!)我看到hashmap的元素大小增加了,但是值是空的。

真正奇怪的情况是。你可以看到下面的结果

代码语言:javascript
复制
HashMap map = getHashMapData();
System.out.println("####Iterate over keySet");
for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) {
    Object  key = (Object) iterator.next();
    System.out.println(key +" : "+map.get(key));
}
System.out.println("####Iterate over entrySet");
for (Iterator it = map.entrySet().iterator(); it.hasNext();){
    Entry e = (Entry) it.next();
    System.out.println(e.getKey() +":"+ e.getValue());  
}
System.out.println("###sysout map");
System.out.println(map);

输出

代码语言:javascript
复制
####Iterate over keySet
[4/11/14 9:33:14:737 EEST] 00000095 SystemOut     O persistData : null
[4/11/14 9:33:16:017 EEST] 00000095 SystemOut     O processCodeDVO : null
####Iterate over entrySet
[4/11/14 9:33:18:169 EEST] 00000095 SystemOut     O persistData:[27883271, 22644993]
[4/11/14 9:33:19:199 EEST] 00000095 SystemOut     O processCodeDVO:test.dvo.ProcessCodeDVO@a31742c
###sysout map
[4/11/14 9:33:21:414 EEST] 00000095 SystemOut     O {persistData=[27883271, 22644993], processCodeDVO=test.dvo.ProcessCodeDVO@a31742c}

问题是什么?有什么建议吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-01-20 22:36:01

终于解决了。问题出现在hashmap上,该hashmap只有一个元素,并且之前被反序列化了。我打开一个pmr,下面是答案“对于SDK 6.0.1 (也称为Java1.6)和SDK 7.0 (也称为Java1.7),有不同的APAR代表相同的问题。Java6.0.1: IV56384这将包含在未来的版本中开发人员目前预测它将包含在IBMSDK6.0.1 SR8 Java7.0中: IV36796这是在IBMSDK7.0 SR4或更高版本中修复的”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23005797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档