我让XStream使用以下xml:为我构建了一个链接哈希映射
<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()的错误?
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
只要键是唯一的,无论值相等,您都将为每个值获得一个单独的条目。