针对哈希冲突,常用的思路有两种:
1,闭散列。
2,开散列。
思考:HashMap处理哈希冲突采用的是哪种方式?
答:HashMap解决哈希冲突采用的是链地址法。属于开散列。说白了就是把冲突的key连接起来,放到桶里。当桶中的元素个数不超过6个时,以单链表的形式串起来,当桶中的元素个数超过6个时,以红黑树的形式串起来。
一,闭散列
闭散列:又叫开放地址法或者也叫线性探测法。
什么意思呢?当我们要往哈希表中插入一个数据时,通过哈希算法计算key的hashcode,当我们找到该位置时,发现已经有元素了,此时我们就找紧跟着这一位置的下一个位置,看是否存在元素,如果能则插入,不能则继续探测紧跟着当前位置的下一个位置。
二,开散列
开散列方法,open hashing,也称为拉链法,separate chaining。开散列法把发生冲突的关键码存储在散列表主表之外。
网友评论