在1.8以前,存入HashMap<key,value>是,使用的方法是:
将key进行哈希值计算,得到一个数组的下标,然后将value放入该下标对应的数组中。
所以这种方法就会存在一个问题:哈希冲突
所谓hash冲突,是由于哈希算法被计算的数据是无限的,而计算后的结果范围有限,所以总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。
在1.8之前解决哈希冲突的方法:
将发生哈希冲突的value下标出改为存储链表,后存入的数据放在链表头。
所以就会存在一个问题,一旦一个key哈希冲突过多,链表就会特别长,HashMap遍历就比较慢。
在1.8中,改善了处理哈希冲突的方法:
1.8jdk引入了红黑树的用:
在数据个数大于大于64和链表长度大于8就会转换为红黑树。
这样在遍历时效率将会提升很多。