如何在HashMap中获取重写的键值

时间:2018-01-23 11:21:35

标签: java hashmap

Map<String,String> mapp=new HashMap<>();
mapp.put("1", "abc");
mapp.put("1", "def");

System.out.println(mapp.size());
System.out.println(mapp.get("1"));
System.out.println(mapp);

O / P

1
def
{1=def}

如何获得&#39; abc&#39;价值,并在地图中显示为大小为1。

这可能是哈希冲突的情况,因为密钥相同可以产生相同的哈希码并存储在同一个索引中吗?

2 个答案:

答案 0 :(得分:3)

mapp.put("1", "def");将返回键“1”的前一个值 - “abc”。

你可以看到它:

System.out.println(mapp.put("1", "def"));

之后,无法获取“1”键的原始值,因为它已被覆盖。

这是在put

的Javadoc中指定的
  

V java.util.Map.put(K key,V value)

     

将指定的值与此映射中的指定键相关联(可选操作)。 如果地图以前包含该键的映射,则旧值将替换为指定值。 (当且仅当m.containsKey(k)返回true时,地图m才包含密钥k的映射。)

     

<强>返回:

     

与键关联的上一个值,如果没有键的映射,则为null。

答案 1 :(得分:2)

一旦你在一个hashmap中破坏了一个键的值,那么该值就是用于所有意图和目的。如果您需要跟踪与密钥关联的多个值,请考虑使用某种集合的映射:

使用列表地图:

Map<String, List<String>> mapp = new HashMap<>();
List<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
mapp.put("1", list);