简介
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) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
步骤二
tab[(n - 1) & hash ] = new Node();
这两步直接计算出来了 桶的位置
图解 图片来自https://www.zhihu.com/question/20733617
未完待续