天天看点

java HashMap 深入浅出

简介

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

java HashMap 深入浅出

未完待续