简介
HashMap 实现 java.util.Map 接口, 通过键值对存储。HashMap与HashTable 功能基本相同,但是HashMap是线程不安全的,HashTable 则是线程安全的。HashMap通过对象HashCode进行或运算 加位移运算得到Hash值。HashMap存在最大容量 1 << 30 。
总结 hashMap有如下特点
1. 键值对存储
2. 一般情况下查询速度优于其它Map
3. 插入与查询效率与hashCode 直接关联
4. 不能有重复键
5. HashMap 是无序的
HashMap 核心方法
步骤一
static final int hash(Object key) {
int h;
return (key == null) ? : (h = key.hashCode()) ^ (h >>> );
}
步骤二
tab[(n - ) & hash ] = new Node();
这两步直接计算出来了 桶的位置
图解 图片来自https://www.zhihu.com/question/20733617
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPF5mWpRWbiBnRuJGashFZ2hWblZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zM2ETM0kjMwAzNyIDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
未完待续