java hashMap<;整数,字符串>;碰撞

java hashMap<;整数,字符串>;碰撞,java,hashmap,hash-collision,Java,Hashmap,Hash Collision,如果这个问题已经被问到了,我很抱歉,但是我不确定我的问题的答案。 我在做HashMap,我放了两个值(7,“值测试1”)(7,“值测试2) 根据javaapi规范,第一个值被第二个值替换 我的问题是冲突何时解决?为什么我的第二个值不存储在linkedList或hashMap中的另一个位置?是由于equals或hascode方法吗 如果两个不同的键解析到hashmap中的同一个bucket,则会发生冲突处理。在这种情况下,第二个条目将被放入链接列表中 在您的情况下,替换相同键(7)的条目,因此不会

如果这个问题已经被问到了,我很抱歉,但是我不确定我的问题的答案。 我在做HashMap,我放了两个值(7,“值测试1”)(7,“值测试2) 根据javaapi规范,第一个值被第二个值替换

我的问题是冲突何时解决?为什么我的第二个值不存储在linkedList或hashMap中的另一个位置?是由于equals或hascode方法吗


如果两个不同的键解析到hashmap中的同一个bucket,则会发生冲突处理。在这种情况下,第二个条目将被放入链接列表中

在您的情况下,替换相同键(7)的条目,因此不会发生冲突


如果需要每个键包含多个值的映射,请使用
映射
(也可以使用
列表
等,而不是
集合
)然后自己处理添加/删除到该集合的操作,或者使用Apache Commons的
MultiMap
或Google Guava的
MultiMap
,例如,如果两个不同的键解析到hashmap中的同一个bucket,则会发生冲突处理。在这种情况下,第二个条目将被放入链接列表中

在您的情况下,替换相同键(7)的条目,因此不会发生冲突


如果需要每个键包含多个值的映射,请使用
映射
(也可以使用
列表
等,而不是
集合
)然后自己处理添加/删除到该集合的操作,或者使用Apache Commons的
MultiMap
或Google Guava的
MultiMap
,例如,如果两个不同的键解析到hashmap中的同一个bucket,则会发生冲突处理。在这种情况下,第二个条目将被放入链接列表中

在您的情况下,替换相同键(7)的条目,因此不会发生冲突


如果需要每个键包含多个值的映射,请使用
映射
(也可以使用
列表
等,而不是
集合
)然后自己处理添加/删除到该集合的操作,或者使用Apache Commons的
MultiMap
或Google Guava的
MultiMap
,例如,如果两个不同的键解析到hashmap中的同一个bucket,则会发生冲突处理。在这种情况下,第二个条目将被放入链接列表中

在您的情况下,替换相同键(7)的条目,因此不会发生冲突


如果需要每个键包含多个值的映射,请使用
映射
(也可以使用
列表
等,而不是
集合
)并自行处理添加/删除到该集合的操作,或使用Apache Commons的
MultiMap
或Google Guava的
MultiMap
,例如
HashMultimap
,这与哈希冲突无关。哈希冲突(即,具有相同
hashcode()
的键)在您的示例中,两个键是相等的(即,
7.equals(7)==true
),因此旧值被替换

在下面的示例中

Map<Integer, String> map = new HashMap<>();
map.put(7, "value 1");
map.put(7, "value 2");
System.out.println(map.get(7));
Map Map=newhashmap();
地图放置(7,“值1”);
地图放置(7,“值2”);
System.out.println(map.get(7));
你认为最后一行会发生什么

也许你在找多重地图


这与哈希冲突无关。哈希冲突(即具有相同的
hashcode()
)的键由HashMap正确处理。在您的示例中,两个键都相等(即
7.equals(7)==true
),因此旧值被替换

在下面的示例中

Map<Integer, String> map = new HashMap<>();
map.put(7, "value 1");
map.put(7, "value 2");
System.out.println(map.get(7));
Map Map=newhashmap();
地图放置(7,“值1”);
地图放置(7,“值2”);
System.out.println(map.get(7));
你认为最后一行会发生什么

也许你在找多重地图


这与哈希冲突无关。哈希冲突(即具有相同的
hashcode()
)的键由HashMap正确处理。在您的示例中,两个键都相等(即
7.equals(7)==true
),因此旧值被替换

在下面的示例中

Map<Integer, String> map = new HashMap<>();
map.put(7, "value 1");
map.put(7, "value 2");
System.out.println(map.get(7));
Map Map=newhashmap();
地图放置(7,“值1”);
地图放置(7,“值2”);
System.out.println(map.get(7));
你认为最后一行会发生什么

也许你在找多重地图


这与哈希冲突无关。哈希冲突(即具有相同的
hashcode()
)的键由HashMap正确处理。在您的示例中,两个键都相等(即
7.equals(7)==true
),因此旧值被替换

在下面的示例中

Map<Integer, String> map = new HashMap<>();
map.put(7, "value 1");
map.put(7, "value 2");
System.out.println(map.get(7));
Map Map=newhashmap();
地图放置(7,“值1”);
地图放置(7,“值2”);
System.out.println(map.get(7));
你认为最后一行会发生什么

也许你在找多重地图


如果要为同一个键存储多个值,可以使用apache collections中的MultiMap。以防万一您不知道,
Map#put
在这种情况下返回旧值,以便您可以对其执行任何操作。如果要为同一个键存储多个值,可以使用apache collections中的MultiMap。以防万一您需要dnt不知道,
Map#put
在这种情况下返回旧值,以便您可以对其执行任何操作。如果您想为同一个键存储多个值,可以使用apache集合中的MultiMap。万一您不知道,
Map#put
在这种情况下返回旧值,以便您可以对其执行任何操作。如果您想为同一个键存储多个值,您可以使用apache集合中的MultiMap。万一您不知道,
Map\put
在这种情况下返回旧值,这样您就可以做什么了