Java HashMap解读
Hash表介绍
Hash函数本质是建立一个值-索引的映射关系,通过这个映射关系来节约遍历列表的时间,是一种权衡了时间和空间消耗的算法,当出现Hash冲突后,可以采用链地址,哈希再散列等方法来解决
Java中计算HashCode
Java中自带的hashCode方法是一个Native方法,具体实现在C代码中,主要通过将对象的地址位移来制造随机数,进而作为对象的哈希值
但是对于不同的类来说,hashCode的方法又有所不同,这是因为相同值需要相同的hashcode,但是传统的hashcode是以地址为凭证的,所以重写了equal的方法的类,那么他的hashcode也同样需要重写,因此对于String,Integer等类来说,各自hashcode方法都各不相同
HashMap
主要变量介绍
变量名 | 介绍 | 默认值 |
---|---|---|
DEFAULT_INITIAL_CAPACITY | 默认初始大小 | 16 |
MAXIMUM_CAPACITY | 最大大小 | 1<<31 |
DEFAULT_LOAD_FACTOR | 负载因子 | 0.75 |
初始化
初始大小为2的倍数,例如用户指定大小为24,那边系统就会创建一个大小为32的HashMap,负责大小的阈值为32*0.75=24,也就是当数据超过24时,HashM