当对象 Hashcode 更改时,Hashmap 或 Hashset 中的查找会发生什么情况
在哈希映射中,所提供密钥的哈希代码用于将值放在哈希表中。在哈希集中,obects 哈希码用于将值放在基础哈希表中。即,哈希映射的优点是您可以灵活地决定您想要什么作为密钥,因此您可以做这样的好事。
Map<String,Player> players = new HashMap<String,Player>();
这可以将字符串(如玩家名称)映射到玩家本身。
我的问题是,当密钥的哈希码更改时,查找会发生什么情况。
我预计这对于Hashmap来说并不是一个主要问题,因为我不希望也不希望密钥发生变化。在前面的示例中,如果玩家姓名更改,他不再是该玩家。但是,我可以使用键更改来查找玩家,其他字段不是名称,并且将来的查找将起作用。
但是,在哈希集中,由于整个对象的哈希码用于放置项目,如果有人稍微更改了对象,则该对象的未来查找将不再解析到哈希表中的相同位置,因为它依赖于整个对象哈希码。这是否意味着一旦数据位于哈希集中,就不应该更改它。还是需要重新讨论?还是自动完成等?这是怎么回事?