【发布时间】:2011-05-03 05:26:31
【问题描述】:
这是我第一次涉足 Java,我无法理解地图的工作原理。我有一个 for 循环,它将信息地图附加到另一个地图中。但是,当我查看最外面的地图时,它包含正确数量的子地图,但是它们都包含相同的信息,即使我最初在其中放置了不同的信息……有人知道为什么吗?
谢谢,
勒芒
下面我包含了我的代码和 System.out.print 输出:
代码:
Map continents = new HashMap();
Map continentData = new HashMap();
int lastContinent = -1;
//Accumulate Continent data
for(Country currCountry : countries){
continentData.clear();
int currContinent = currCountry.getContinent();
continentData.put("P", 0);
continentData.put("E", 1);
continentData.put("O", 2);
continentData.put("Bonus",currContinent);
if(currContinent != lastContinent){
continents.put(currContinent, continentData);
System.out.println("add");
System.out.println(continentData);
}
lastContinent = currContinent;
}
System.out.println(continents.toString());
结果:
add
{E=1, P=0, O=2, Bonus=0}
add
{E=1, P=0, O=2, Bonus=1}
add
{E=1, P=0, O=2, Bonus=2}
add
{E=1, P=0, O=2, Bonus=3}
add
{E=1, P=0, O=2, Bonus=4}
add
{E=1, P=0, O=2, Bonus=5}
{0={E=1, P=0, O=2, Bonus=5}, 1={E=1, P=0, O=2, Bonus=5}, 2={E=1, P=0, O=2, Bonus=5}, 3={E=1, P=0, O=2, Bonus=5}, 4={E=1, P=0, O=2, Bonus=5}, 5={E=1, P=0, O=2, Bonus=5}}
【问题讨论】:
标签: java map for-loop hashmap nested