我有一個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