每个值LinkedHashMap迭代运行多次

时间:2013-08-14 04:08:47

标签: java xstream

我有XStream使用这个xml为我构建一个Linked Hash Map:

<linked-hash-map>
 <entry>
  <string>#!/masterofsoundtrack/broadcast</string>
  <broadcast>
    <attributes class="linked-hash-set"/>
    <url>#!/masterofsoundtrack/broadcast</url>
    <name>MasterofSoundtrack</name>
    <description></description>
    <startsClosed>false</startsClosed>
  </broadcast>
 </entry>
 <entry>
  <string>MasterofSoundtrack</string>
  <broadcast reference="../../entry/broadcast"/>
 </entry>
</linked-hash-map>

注意:如果您不理解XStream应该做什么,它会将XML转换为对象。上面的XML意味着有一个链接的哈希映射,其中两个键都指向同一个对象。

但是,当我使用以下代码迭代这个时:

for(Broadcast broadcast: map.getValues()){
    managers.add(new Manage(broadcast));
}

我正在运行managers.add()行两次。如果我调试并查看地图,它们具有不同的ID,但看起来相同。这是XStream的错误,还是我用getValues()无法理解的东西?

1 个答案:

答案 0 :(得分:2)

HashMap<String, Object> map = new HashMap<>();
Object o = new Object;
map.put("1", o);
map.put("2", o);
System.out.print(map.values().size()) //prints 2

只要密钥是唯一的,无论值是否相等,您都会为每个值获取单独的条目。