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。
这可能是哈希冲突的情况,因为密钥相同可以产生相同的哈希码并存储在同一个索引中吗?
答案 0 :(得分:3)
mapp.put("1", "def");
将返回键“1”的前一个值 - “abc”。
你可以看到它:
System.out.println(mapp.put("1", "def"));
之后,无法获取“1”键的原始值,因为它已被覆盖。
这是在put
:
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);