java8新特性------速度更快

x33g5p2x  于2021-12-18 转载在 其他  
字(0.4k)|赞(0)|评价(0)|浏览(292)

例如HashMap以前用的是Hash表(哈希算法)存储数据

Hash表实质上是数组,默认的长度是16。

jdk1.8以前:

以前的HashMap存储是通过HashMap存储的(数组+链表)

     现假设有一个对象需要存储在HashMap中,首先这个对象会被Hash算法运算获得一个hash值,然后存储在数组中,下标就是得到的Hash值。

当有新对象存储时同样通过hash算法运算得到哈希值,存储在数组中。如果Hash值相同则通过链表连接。

如下图HashMap结构:HashMap在当hash表存储达到75%时就会自动扩容(然后链表的每一个原始的重新运算,找到新位置再插入HashMap)

但是当查找对象在链表中而且碰巧这个链表非常的长,那么查询的时间就会变长,效率低。

jdk1.8:采用了 数组+链表+红黑树(平衡二叉树)

红黑树示例:

链表变成了红黑树

红黑树的特点是除了插入慢,其它查询 和 删除 都快(这样HashMap的速度就会变快)

相关文章