我有一个HashMap的问题。它会在插入新的键值对时将引用存储为值。HashMap更改值引用
我使用HashMap来更快地访问存储在非常分层结构中的对象。当第一对插入时,其地址和原始地址是相同的。在添加另一对之后,存储在HashMap中的地址被改变。因此,我不能通过HashMap的原始对象。
这是怎么发生的?
这里是我如何构造HashMap的代码。在第二种方法中,在第一个for循环中发生上述情况。
private Map<String, Parameter> createRefMap(Settings settings) {
Map<String, Parameter> result = new HashMap<String, Parameter>();
for (ParameterList parameterList : settings.getParameterList()) {
result.putAll(createRefMap(parameterList, "SETTINGS"));
}
return result;
}
private Map<String, Parameter> createRefMap(ParameterList parameterList, String preLevel) {
Map<String, Parameter> result = new HashMap<String, Parameter>();
String level = preLevel + "/" + parameterList.getName();
for (Parameter parameter : parameterList.getParameter()) {
result.put(level + "/" + parameter.getName(), parameter);
}
for (ParameterList innerParameterList : parameterList.getParameterList()) {
result.putAll(createRefMap(innerParameterList, level));
}
return result;
}
这是我如何把它
this.actRefMap = createRefMap(this.actAppSettings);
请贴一些代码 – 2013-02-21 10:40:23
您能否为您面临的问题粘贴一些代码? – Jagannath 2013-02-21 10:41:18
你是什么意思'地址改变'?你应该使用key来获取存储在HashMap中的对象。 – ntalbs 2013-02-21 10:42:44