摘要: HashMap数据存储的过程先根据key获得hash值,通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。 其中, 阅读全文
posted @ 2019-08-19 22:22 猫不夜行 阅读(1881) 评论(0) 推荐(1) 编辑
摘要: 1. HashMap在什么条件下扩容 判断HashMap的数组Size大小如果超过loadFactor*capacity,就要扩容。 相关的类属性: capacity:当前数组容量,始终保持 2^n,可以扩容,扩容后数组大小为当前的 2 倍。 loadFactor:负载因子,默认为 0.75 loa 阅读全文
posted @ 2019-08-19 21:54 猫不夜行 阅读(2915) 评论(0) 推荐(2) 编辑
摘要: HashMap源码数据结构: 其中,Entry就是一个链表节点。如果将数组替换成LinkedList是否可行?如下: 将数组替换成LinkedList是可以的,但是HashMap选用数组的原因有以下两点: 1)数组效率高 在HashMap中,定位桶的位置是利用元素的key的哈希值对数组长度取模得到。 阅读全文
posted @ 2019-08-19 21:18 猫不夜行 阅读(1622) 评论(0) 推荐(0) 编辑