java将HashMap元素放入foreach循环中仅使用最后一个

标签 java hashmap

我在将元素添加到循环内的 HashMap 时遇到强度问题。我确保在迭代之前声明映射,以忽略每次的重新创建,但我遇到了同样的问题 - 映射中仅保留循环迭代中的最后一个元素。代码是

//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}

我只是不明白为什么会发生这种情况,任何解释将不胜感激。

最佳答案

好吧,您试图忽略 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,但具有除原始 int 以外的索引,并且无需将索引置于范围内0..size-1

关于java将HashMap元素放入foreach循环中仅使用最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062551/

相关文章:

java - 用于 rabbitmq 的 Spring Boot 可信包

java - 为什么 HashMap containsKey 在 Sun JDK 中比 get 慢? (太阳-jdk-1.6.0.17)

java - 在 HashMap 中使用键检索值而不使用迭代器

java - 关于 Java HashMap 源

java - 在 spring Controller 中处理一些自定义验证

java - 在 AppWidgetProvider 中使用 MediaPlayer?

Java LibGDX 多点触控问题

java - 如何从 map 上删除符号

java - 架构:填充 Hashmap 时如何解决 GC 开销问题

java - 带有 HashMap 的 ArrayList 与带有 Class 的 ArrayList