HashMap的底层原理分析jdk1.8以前
来源:互联网 发布:2016网络歌手名单 编辑:程序博客网 时间:2024/06/03 04:24
HashMap的原理
HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫Entry.这些键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干.HashMap数组的每一个元素的初始值都是Null
Put方法的原理
在调用Put方法的时候我们,HashMap要利用哈希函数来确定Entry的插入的位置也就是Entry的索引,例如put("hello",0),插入一个key为hello的元素.hanhMap内部会通过哈希函数将hello得到一个值,这个值就是数组中的index
这样就可以将Entry插入到主干(数组)中去,但是如果只是单纯的这样做是会有问题的,因为hashmap的长度是有限的,当插入的Entry越来越多是就会发生问题,索引冲突的问题
hashMap是这样处理这个问题的,HashMap数组中的每一个Entry不止是一个对象,同时也是一个链表的头结点,每一个Entry通过地址记住它的下一个节点,当产生冲突的时候直接插入对应的链表就可以了,但是需要注意的是它并不是插入尾部而是插入到了头部.至于为什么要插到头部.我也不知道为什么.
Get方法的原理
在调用Get方法的时候,和put方法同样的会经过一次哈希函数将key的所对应的index算出来,这样就可以拿到了,但是正如我们上面放的时候会有索引冲突.HashMap是如何获取到索引冲突的元素呢.这是候就用到key的原始值,它通过从头到尾的扫描Entry链表.从而找到对应的Entey.
这只是HashMap的一部分还有关于HashMap如何是数据均匀分布,HashMap的扩容,在扩容时会有发什么问题.这些问题我还在总结中.
- HashMap的底层原理分析jdk1.8以前
- Java中HashMap底层实现原理(JDK1.8)源码分析
- Java中HashMap底层实现原理(JDK1.8)源码分析
- Java中HashMap底层实现原理(JDK1.8)源码分析
- Java面试绕不开的问题: Java中HashMap底层实现原理(JDK1.8)源码分析
- (转载)Java中HashMap底层实现原理(JDK1.8)源码分析
- HashMap的底层原理及源码分析
- HashMap的底层原理分析二
- HashMap的jdk1.8分析
- HashMap的底层原理
- HashMap的底层原理
- HashMap的工作原理 - JDK1.8
- JDK1.8的HashMap源码分析
- HashMap底层实现(jdk1.8)
- hashMap的底层实现原理
- 浅谈HashMap 的底层原理
- HashMap之entrySet( )底层实现原理分析
- 容器Map和HashMap底层原理分析
- 助你快速踏入高薪职场——2017面试集锦之html & JavaScript & ajax
- 从 API、UI、结构到商业产品设计精髓
- 利用 TensorFlow 实现排序和搜索算法
- 那些关于前端数据结构与算法
- 约瑟夫环的问题
- HashMap的底层原理分析jdk1.8以前
- 【区块链】【Java 】【自动化测试】【前端规划】【入行AI】| Chat · 预告
- 没有存在感的阿里工程师
- pytorch0.2.1的使用
- FreeBSD 配置FTP服务
- 计算1+2+3+。。。n
- ASP.NET Razor
- 一个程序员要扔掉多少代码,才能成为真正的程序员
- 不用加减乘除做加法