文章13 | 阅读 4717 | 点赞0
例如HashMap以前用的是Hash表(哈希算法)存储数据
Hash表实质上是数组,默认的长度是16。
以前的HashMap存储是通过HashMap存储的(数组+链表)
现假设有一个对象需要存储在HashMap中,首先这个对象会被Hash算法运算获得一个hash值,然后存储在数组中,下标就是得到的Hash值。
当有新对象存储时同样通过hash算法运算得到哈希值,存储在数组中。如果Hash值相同则通过链表连接。
如下图HashMap结构:HashMap在当hash表存储达到75%时就会自动扩容(然后链表的每一个原始的重新运算,找到新位置再插入HashMap)
但是当查找对象在链表中而且碰巧这个链表非常的长,那么查询的时间就会变长,效率低。
jdk1.8:采用了 数组+链表+红黑树(平衡二叉树)
红黑树示例:
链表变成了红黑树
红黑树的特点是除了插入慢,其它查询 和 删除 都快(这样HashMap的速度就会变快)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://yumbo.blog.csdn.net/article/details/102946110
内容来源于网络,如有侵权,请联系作者删除!