Это мой первый набег на java, и мне трудно понять, как работают карты. У меня есть цикл for, который добавляет карты информации в другую карту. Однако, когда я смотрю на крайнюю карту, она содержит правильное количество вложенных карт, однако все они содержат одну и ту же информацию, хотя я изначально помещал в них различную информацию ... Кто-нибудь знает почему?
Спасибо
Lemiant
Ниже я включил свой код и вывод 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}}