Java集合——HashMap

Mr.Jia 2023-5-3 230 5/3

大致底层逻辑

首先由于Java是运行在jvm上的 不允许直接操作内存

所以HashMap在存储时都需要先根据设定好的hash算法计算出HashCode

由于计算出来的HashCode会出现重复

在出现重复时就发生了hash碰撞

然而需要解决hash碰撞,在数据结构中有专门的方法(开放地址法等)

hashmap用的是链式地址法,就是在存储桶的数组下面放一个链表,链表中存储冲突的HashCode

但是当链表过长是查询时间过长,就在jdk8中把链表长度超过8时变为黑红树

因为在数据结构中的树形查询中黑红树的特征不容易被破环,旋转次数少——————red/black Tree动态生成黑红树网站

特点:

  • 无序的——若在为excel设置标题时,使用HashMap预先按顺序添加了1—10的数字,在使用时不会按顺序设置到标题上
  • 键值对都可以为null
  • 线程不安全的——在多线程的场景下使用数据会出现丢失
  • key不能重复,如果重复了会覆盖原来的value
  • 初始容量16,默认加载因子为0.75
- THE END -

Mr.Jia

5月24日14:13

最后修改:2024年5月24日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论