Java 在HashMap中显示所有冲突

Java 在HashMap中显示所有冲突,java,hash,hashmap,hashtable,Java,Hash,Hashmap,Hashtable,我不熟悉java中的HashMap。我试图创建一个发生碰撞的场景,并为同一个键创建一个场景(本例中为1)。我了解到HashMap中的值没有被过度写入,而是保存在链接列表中。如何显示键“1”的所有值 那不是真的。映射中只存储每个唯一键的一个键、值对。为特定键在映射中输入的最新值将覆盖为该键存储的上一个值 不同的键可能具有相同的哈希代码,这导致它们存储在HashMap内的相同链表中,但映射中的键都是唯一的。对于映射中的每两个键,key1.equals(key2)将返回false,即使key1.has

我不熟悉java中的HashMap。我试图创建一个发生碰撞的场景,并为同一个键创建一个场景(本例中为1)。我了解到HashMap中的值没有被过度写入,而是保存在链接列表中。如何显示键“1”的所有值


那不是真的。映射中只存储每个唯一键的一个键、值对。为特定键在映射中输入的最新值将覆盖为该键存储的上一个值


不同的键可能具有相同的哈希代码,这导致它们存储在HashMap内的相同链表中,但映射中的键都是唯一的。对于映射中的每两个键,
key1.equals(key2)
将返回false,即使
key1.hashCode()==key2.hashCode()
这不是真的。映射中只存储每个唯一键的一个键、值对。为特定键在映射中输入的最新值将覆盖为该键存储的上一个值


不同的键可能具有相同的哈希代码,这导致它们存储在HashMap内的相同链表中,但映射中的键都是唯一的。对于map中的每两个键,
key1.equals(key2)
将返回false,即使
key1.hashCode()==key2.hashCode()
map javadoc的前两行解释了这一切

public interface Map<K,V>
公共接口映射
将关键点映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值。


地图的javadoc可以在这里找到-

地图的前两行javadoc解释了这一切

public interface Map<K,V>
公共接口映射
将关键点映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值。


javadoc for Map可以在这里找到-

您的场景可能不可行,您需要的是一个多值映射您的场景可能不可行,您需要的是一个多值映射,因此,如果我必须存储“Ca”和“DB”(两者对于hashcode都有相同的值),我应该怎么做?“Ca”和“DB”是键还是值?如果它们是值,那么键是什么?@user3554962它们是键还是值取决于它们是传递给put方法的第一个参数还是第二个参数。如果它们是键,那么它们都将与它们的值一起存储在hash映射中,并且它们是否具有相同的hashCode值并不重要(就功能而言)。但是,如果许多键都有相同的hashCode,那么您可能会遇到性能问题。因此,如果我必须存储“Ca”和“DB”(两者的hashCode值相同),我应该怎么做?“Ca”和“DB”是键还是值?如果它们是值,那么键是什么?@user3554962它们是键还是值取决于它们是传递给put方法的第一个参数还是第二个参数。如果它们是键,那么它们都将与它们的值一起存储在hash映射中,并且它们是否具有相同的hashCode值并不重要(就功能而言)。但是,如果许多键都有相同的hashCode,那么您可能会遇到性能问题。因此,如果我必须存储“Ca”和“DB”(两者的hashCode值相同),我应该怎么做?“Ca”和“DB”是键还是值?如果它们是值,那么键是什么?即使hashcode返回相同的值,“Ca”。等于“DB”也会失败,因此它们将被视为两个不同的键。对值没有限制。一个可能有10个不同的键,所有键都有相同的值。所以,如果我必须存储“Ca”和“DB”(两者对于hashcode都有相同的值),我应该怎么做?“Ca”和“DB”是键还是值?如果它们是值,那么键是什么?即使hashcode返回相同的值,“Ca”。等于“DB”也会失败,因此它们将被视为两个不同的键。对值没有限制。一个可能有10个不同的键,都有相同的值
public interface Map<K,V>