HashMap实现原理分析(两个hashcode相同 的对象怎么存入hashmap的)

疑问:如果两个key通过hash%Entry[].length得到的index相同,会不会有覆盖的危险?

这里HashMap里面用到链式数据结构的一个概念。
上面我们提到过Entry类里面有一个next属性,作用是指向下一个Entry。
打个比方, 第一个键值对A进来,通过计算其key的hash得到的index=0,记做:Entry[0] = A。
一会后又进来一个键值对B,通过计算其index也等于0,现在怎么办?
HashMap会这样做:B.next = A,Entry[0] = B,如果又进来C,index也等于0,那么C.next = B,Entry[0] = C;
这样我们发现index=0的地方其实存取了A,B,C三个键值对,他们通过next这个属性链接在一起。
所以疑问不用担心。也就是说数组中存储的是最后插入的元素。到这里为止,HashMap的大致实现,我们应该已经清楚了。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算...
    曹振华阅读 2,527评论 1 37
  • 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memca...
    sherlock_6981阅读 318评论 0 1
  • HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用n...
    境里婆娑阅读 170评论 0 1
  • 我看见 北方的大地上 奔跑着 一匹孤独的野狼 我听见 他在旷野里 低声地 吟唱 有谁愿意 孤孤单单地 一个人生活 ...
    金火丁阅读 318评论 0 4
  • 文/安若木槿 安若木槿,静待花开。安若木槿是我的笔名,意思是像木槿花一样的安然、淡定;静待花开是我对自己的期待,在...
    蜉蝣舟阅读 1,714评论 7 11