【发布时间】:2015-06-19 12:06:32
【问题描述】:
我会保持简短而甜蜜。我正在做一个涉及 HashMap 嵌套的项目,我遇到了这个问题(简化为一个测试用例):
HashMap options = new HashMap();
HashMap<String,String[]> adMap = new HashMap<String,String[]>();
String[] Test = new String[2];
Test[0] = "Oh";
Test[1] = "yeah";
adMap.put("Test1",Test);
Test[0] = "Foo";
Test[1] = "Bar";
adMap.put("Test2",Test);
Test[0] = "Foosa";
Test[1] = "Barsa";
adMap.put("Test3",Test);
options.put("adList",adMap);
HashMap<String,String[]> adList = (HashMap<String,String[]>)options.get("adList");
String[] ipPort = adList.get("Test1");
System.out.println(ipPort[0]+ipPort[1]);
预期输出:哦耶
实际输出:FoosaBarsa
知道为什么会发生这种情况以及如何解决吗?
【问题讨论】:
-
您更改了已存储对象中的值,您需要对 Array 对象进行新的引用,如下所示: String[] test = new String[2]; test[0] = ... test[1] = ... put(...,test) test = new String[2]