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

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

jdk1.8以前:

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

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

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

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

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

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

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

红黑树示例:

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

链表变成了红黑树

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

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

 

 

相关文章:

  • 2021-12-11
猜你喜欢
  • 2021-04-16
  • 2021-10-12
  • 2021-10-05
  • 2021-10-04
  • 2021-07-24
  • 2021-08-25
相关资源
相似解决方案