采用混列结构的集装箱除了采用混列算法确定集合中元素的位置外
通过hash算法控制集合的大小
HashMap的内部实现机制
HashMap的内部实现机制是数据结构内的哈希表(Hash Table )的实现,哈希表也称为哈希表。
Hash表是一种数据结构,它基于键码Key访问相应的值Value,并使用映射函数将键码映射到表中的位置
访问此位置的值以加快搜索。 此映射函数称为Hash函数,存储的数组称为Hash表。
实现散列:
主要是散列算法和冲突的解决
计算出map中key的散列值,在散列表中找到key、value的位置,从key中查找value
如果多个哈希值发生冲突,则使用链表结构在哈希值的同一位置存储多个对象,当hashMap访问map时
根据key的hashCode值快速定位。 如果HashMap中的两个或多个元素具有相同的hashCode值,则会导致性能下降
rehash说明:
可以在创建hashMAP时设置参数。 通常是默认值
容量:创建哈希表时的桶数
负载因子:负载因子=map的size/初始化容量
当hash表中的负载因子达到负载极限时,hash表自动增加两倍的容量(桶的数量),将原始对象
的重新分配,并放入新桶中。 这被称为rehash。 这个过程性能足够好,一般不需要
一般来说,为了防止rehash,建议设置相对较大的初始化容量,但太大、初始化容量太大,也不能浪费空间
参考java疯狂讲义