加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java HashMap如何链接?如何访问所有碰撞值?

发布时间:2020-12-15 05:07:34 所属栏目:Java 来源:网络整理
导读:我在某处读过HashMap使用链接来解决冲突.但如果是这样的话.如何访问具有相同键值的所有元素. 例如 : HashMapInteger,String hmap = new HashMapInteger,String();hmap.put(1,"1st value");hmap.put(1,"2nd value");hmap.put(1,"3rd value");hmap.put(1,"4th
我在某处读过HashMap使用链接来解决冲突.但如果是这样的话.如何访问具有相同键值的所有元素.

例如 :

HashMap<Integer,String> hmap = new HashMap<Integer,String>();
hmap.put(1,"1st value");
hmap.put(1,"2nd value");
hmap.put(1,"3rd value");
hmap.put(1,"4th value");

现在,如果我做hmap.get(1)它返回“第四个值”

如果确实它确实像链接一样

Key values 1 “4th Value” —> “3rd Value”—>”2nd Value”—->
“1st Value”

我怎样才能获得其他值?

hmap.get(1)仅返回第一个值.

我的第二个问题是,

如果它做线性链接.如何删除键的任何一个值.假设我想从我的hashmap中删除“4th value”并希望保留相同键的所有其他值,我该怎么办?

如果我做

hmap.remove(1);

,它删除了完整的链.

解决方法

HashMap无法为同一个键存储多个值.

Chaining用于解决散列冲突,即不同密钥具有相同散列的情况.因此,它不是关于使用相同的键存储多个值,而是关于其键具有相同哈希值的多个值.

可以为同一个密钥存储多个值的数据结构称为多图.不幸的是,JRE中没有内置的multimap实现.

如果您需要多图,则可以维护列表地图(由matsev建议),或使用第三方库中的现有多图实施,例如Google Guava.

也可以看看:

> Collision resolution

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读