HashMap原理和rehash解释
采用hash结构的容器,除了采用hash算法来决定集合中元素的位置并通过hash算法来控制集合的大小HashMap的内部实现机制HashMap的内部实现机制是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,他是通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找
·
采用hash结构的容器,除了采用hash算法来决定集合中元素的位置
并通过hash算法来控制集合的大小
HashMap的内部实现机制
HashMap的内部实现机制是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。
Hash表是根据关键码Key来访问其对应的值Value的数据结构,他是通过一个映射函数把关键码映射到表中一个位置
来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放的数组叫做Hash表。
Hash的实现:
主要是 哈希算法 和 冲突的解决
计算出map中key的哈希值,在哈希表中找到<key,value>的位置,根据key找value
当多个哈希值冲突的时候,在哈希值的同一个位置上使用链表结构来保存多个对象,而hashMap访问map的时候
也是根据key的hashCode的值来快速定位,入伙HashMap中俩个以上的元素具有相同的HashCode值,将会导致性能下降
rehash的解释:
在创建hashMAP的时候可以设置来个参数,一般默认
初始化容量:创建hash表时桶的数量
负载因子:负载因子=map的size/初始化容量
当hash表中的负载因子达到负载极限的时候,hash表会自动成倍的增加容量(桶的数量),并将原有的对象
重新的分配并加入新的桶内,这称为rehash。这个过程是十分好性能的,一般不要
一般建议设置比较大的初始化容量,防止rehash,但是也不能设置过大,初始化容量过大 浪费空间
并通过hash算法来控制集合的大小
HashMap的内部实现机制
HashMap的内部实现机制是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。
Hash表是根据关键码Key来访问其对应的值Value的数据结构,他是通过一个映射函数把关键码映射到表中一个位置
来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放的数组叫做Hash表。
Hash的实现:
主要是 哈希算法 和 冲突的解决
计算出map中key的哈希值,在哈希表中找到<key,value>的位置,根据key找value
当多个哈希值冲突的时候,在哈希值的同一个位置上使用链表结构来保存多个对象,而hashMap访问map的时候
也是根据key的hashCode的值来快速定位,入伙HashMap中俩个以上的元素具有相同的HashCode值,将会导致性能下降
rehash的解释:
在创建hashMAP的时候可以设置来个参数,一般默认
初始化容量:创建hash表时桶的数量
负载因子:负载因子=map的size/初始化容量
当hash表中的负载因子达到负载极限的时候,hash表会自动成倍的增加容量(桶的数量),并将原有的对象
重新的分配并加入新的桶内,这称为rehash。这个过程是十分好性能的,一般不要
一般建议设置比较大的初始化容量,防止rehash,但是也不能设置过大,初始化容量过大 浪费空间
参考 java疯狂讲义
更多推荐
已为社区贡献1条内容
所有评论(0)