Java中的HashMap
来源:互联网 发布:网络女歌手歌曲大全 编辑:程序博客网 时间:2024/06/04 23:22
转自公众号:程序员小灰
HashMap 是一个用于存储键值对的集合,每个键值对叫做Entry,这些Entry分散存储在一个数组中,这个数组就是 HashMap 的主干。
HashMap 的每一个元素的初始值都是 NULLHashMap 的 Put 方法:
例如 hashMap.put("apple",0)。
我们先使用哈希函数来确定 Entry 的插入位置(index)
如果最后计算出来的 index 是2,那么就将这个 Entry 插入相应的位置。
但是 HashMap 的长度是有限的,当插入的 Entry 越来越多时,就会出现 index 冲突的情况,相同的 index 该如何储存呢?
可以使用链表来解决:
HashMap 数组的每一个元素不仅仅是一个 Entry ,也是一个链表的头节点,当新来的 Entry 映射到冲突的数组位置时,
只需要使用“头插法”将 Entry 插入到链表即可。
HashMap 的 Get 方法:
Get 方法是根据 key 来查找 value
首先将输入的 key 做一次 Hash 映射,得到对应的 index,
如果对应的 index 处有多个 Entry ,那么从头开始一个一个的查找。
HashMap 的默认长度是多少? 为什么这么规定?
HashMap 的默认长度是16,并且每次自动扩展或是手动初始化时,长度必须的2的幂。
之所以选择16是为了服务于 Key 映射到 index 的 Hash 算法
一切为了 Hash 算法的均匀分布。
高并发情况下,为什么 HashMap 会出现死锁?
Java8中对 HashMap 的结构有什么优化?
阅读全文
0 0
- Java中的HashMap详解
- Java中的几个HashMap
- 理解Java中的hashmap
- Java中的几个HashMap
- java中的HashMap
- java中的HashMap解析
- 详解java中的HashMap
- 理解Java中的hashmap
- java中的HashMap详解
- 解析java中的hashMap
- Java中的hashMap
- java中的HashMap
- Java中的hashmap
- Java中的HashMap
- Java中的HashMap
- java中的hashmap遍历方法
- java中的hashmap和hashcode
- java中的hashmap和hashtable
- 手把手教你估算深度神经网络的最优学习率(附代码&教程)
- HmacSHA256
- 自定义matrix类(数据结构与算法C++)
- 用原型单元格(prototype cell)自定义table view
- opencv2,RGB转Lab色彩空间
- Java中的HashMap
- 文章标题
- 判断等式成立下进制新思路
- 开闭原则 OCP
- 使用回调函数排序整形、浮点型、字符串等类型的数据
- selenium+robot接口测试:接口传参中文报错
- mongodb创建索引
- Spring data redis-StringRedisTemplate 用法
- 使用python绘制一个简单的三维图