java - 将 HashMap 与 ArrayList 一起使用时遇到问题

标签 java arraylist hashmap

<分区>

我在使用 ArrayLists 在我的 java 类中实现 HashMaps 时遇到了问题。问题是它不断向 ArrayList 添加对象是 HashMap,即使我没有更新我的 HashMap

这是我无法理解的代码:

HashMap<String, ArrayList<String>> map = new HashMap<>();

ArrayList<String> array = new ArrayList<String>();
array.add("One");
array.add("Two");

map.put("Key", array);

array.add("Three"); //2. Why does this get added to the HashMap?

System.out.println(map1.get("Key"));
//1. This print out [One, Two, Three].. When it should be [One, Two]!

最佳答案

ArrayList 通过引用传递给 map.put()称呼。这意味着没有复制,在调用您的 array 之后变量指的是同一个对象。如果您在添加条目时进行复制,那么它将起作用:map.put("Key", new ArrayList<String>(array));

关于java - 将 HashMap 与 ArrayList 一起使用时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393111/

相关文章:

java - 求救: Battleship Java (for statement & array dimensions)

java - Maven 站点(Maven 3)生成空站点文件夹

java - Arraylist 索引越界

java - 为什么在 LinkedHashMap 中通过桶迭代比 HashMap 更快?

Java:如何在 HashMap 中获取具有相同值的键集

java - 将 HashMap 转换为数组

java - 无法使用 spring-boot-devtools 运行 2 个 Web 服务器

java - 多重矩形生成

java - ArrayList 在 jQuery 中迭代

Java 玩吧!启动问题