一尘不染

将重复的密钥放入HashMap后会发生什么?

java

如果我多次将相同的键传递给HashMapput方法,那么原始值会怎样?如果值重复出现该怎么办?我没有找到任何文档。

情况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"));

我们得到surely not one。

情况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"));

我们得到one

但是其他值怎么办?我在向学生教授基础知识,有人问我。是Map等,其中最后一个值引用(但在内存中)水桶?


阅读 302

收藏
2020-03-21

共1个答案

一尘不染

根据定义,该put命令将替换与映射中给定键相关联的先前值(概念上类似于对原始类型的数组索引操作)。

映射只是将其引用删除到该值。如果没有其他内容引用该对象,则该对象将有资格进行垃圾回收。另外,Java返回与给定键关联的任何先前值(null如果不存在,则返回任何值),因此你可以确定其中的值并在必要时维护引用。

2020-03-21