多语言展示
当前在线:1561今日阅读:11今日分享:19

HashMap在大量哈希冲突该怎么处理

hash表是一种很好的存储数值的形式,但是数据过多就会导致一些问题,这个问题主要就是hash冲突,HashMap孕育而生就是为了解决Hash冲突的,下面介绍一下Hash冲突和大量hash冲突中HashMap是怎么样解决的,详细如下
工具/原料

HashMap

方法/步骤
1

首先我们需要明白Hash的存储形式是由hashcode决定索引位置的,如果hashcode值相同,同时判断key值,不同则就产生了hash冲突

2

如图是HashMap的put方法的底层实现原理,由图中可以看到当产生了hash冲突的时候我们就采用替换原来的位置,并且之前的以链表的形式展示

3

所以就形成了hashmap这种数组加链表的形式,这种形式的优势就是解决了Hash冲突的情况下方面增删操作

4

下面是从HashMap中取元素的get的源码,我们可以看到源码中首先判断了key是否为空,然后便利这个链表

5

最后jdk1.8引入了红黑树,这个主要是为了解决大量hash冲突而引入的,因为当hash冲突量比较大的时候,链表长度会比较长,此时查询某个值会变得比较浪费时间,所有使用红黑树的形式,当链表长度大于8的时候就会变成红黑树存储,原始情况下时间复杂度是O(n),使用红黑树时间复杂度变成了O(n/2)

注意事项

以上就是小编对hash冲突的理解,如果有问题请留言讨论

推荐信息