如果我将同一个键多次传递给 HashMap
的 put
方法,原始值会怎样?如果连值都重复了怎么办?我没有找到任何关于此的文档。
案例 1:覆盖键的值
Map mymap = new HashMap();
mymap.put("1","one");
mymap.put("1","not one");
mymap.put("1","surely not one");
System.out.println(mymap.get("1"));
我们得到肯定不是一个
。
案例 2:重复值
Map mymap = new HashMap();
mymap.put("1","one");
mymap.put("1","not one");
mymap.put("1","surely not one");
// The following line was added:
mymap.put("1","one");
System.out.println(mymap.get("1"));
我们得到一个
。
但是其他值会怎样呢?我正在向一个学生教授基础知识,我被问到这个问题。 Map
是否像一个桶,其中最后一个值被引用(但在内存中)?
最佳答案
根据定义,put
命令替换与映射中给定键关联的先前值(概念上类似于基本类型的数组索引操作)。
map 只是删除了对值的引用。如果没有其他东西持有对该对象的引用,那么该对象就有资格进行垃圾回收。此外,Java 返回与给定键关联的任何先前值(或 null
如果不存在),因此您可以确定存在什么并在必要时维护引用。
更多信息在这里:HashMap Doc
关于java - 将重复键放入 HashMap 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669885/