大致底层逻辑
首先由于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 -
最后修改:2024年5月24日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://jiaheming.cn/2023/05/java%e9%9b%86%e5%90%88-hashmap/

共有 0 条评论