java在foreach循环中放置HashMap元素只使用最后一个

时间:2015-12-03 09:44:33

标签: java hashmap

我有一个关于在循环内向HashMap添加元素的强度问题。我确保在迭代之前声明map,每次都忽略它的重新创建,但是我遇到了同样的问题 - 在map中只保留了我循环迭代中的最后一个元素。代码是

//declare map         
Map<String, String> map = new HashMap<String, String>();

//my loop iteration
String[] array = {"element1", "element2", "element3"};
for (String str: array) {
map.put("uniqueKey", str);
}

因此,为简单起见map.toString(),我只获得{uniqueKey=element3}

我只是不明白为什么会这样,任何解释都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

嗯,你试图忽略Map关于唯一键的一般概念。当你在循环中重复它时,让你的"uniqueKey"“真正”独一无二:)

我会举个例子来理解:

 Map<String, String> map = new HashMap<>();
 map.put("1", str1);
 map.put("2", str2);
 map.put("3", str3);
 map.put("1", str4); // value str1 is overwritten by str4

Map视为List s,但使用除原始int以外的索引,而无需将范围0 ... {{ 1}}