个人对hashMap的部分理解
2023-02-18 16:42:14 时间
一.单线程下的HashMap(JDK1.8)
HashMap类主要用来处理具有键值对特征的数据,随着JDK版本的更新中,JDK1.8对HashMap的底层进行了一些优化
HashMap是基于哈希表对map接口的实现,HashMap具有较快的访问速度,但是遍历顺序却是不确定的
HashMap提供所有可选的映射操作,并允许使用null值和null键
new HashMap<>().put(null,null);
HashMap并非线程安全,当存在多个线程同时写入HashMap的时候,可能会导致数据的不一致
hashMap有以下几个关键词
- LoadFactor称为负载因子,默认值为0.75
- threshold表示所能容纳的键值对临界值,threshold计算公式为数组长度 * 负载因子
- size是HashMap中实际存在的键值对数量
- modCount字段用来记录hashMap内部结构发生变化的次数
- HashMap的默认容量INITIAL_CARACITY为16
HashMap采用了数组+链表+红黑树的存储方式,HashMap的数组部分称为哈希桶,当链表长度大于8时,链表数据将以红黑树的形式进行储存,当降到6时就用链表
相关文章
- 多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(36)-掌握Fiddler中Fiddler Script用法,你会有多牛逼-上篇
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(37)-掌握Fiddler中Fiddler Script用法,你会有多牛逼-下篇
- 环境调试bug【一】
- 【Qbot】3.加入内容审核功能
- 环境调试bug【二】无法加载源“<string>”: Source unavailable
- parser.add_argument()用法——命令行选项、参数和子命令解析器
- 一次TiDB GC阻塞引发的性能问题分析
- windows共享文件创建----局域网办公
- 【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
- 【二】分布式训练---参数服务器训练(飞桨paddle1.8)
- BloomFilter 布隆过滤器思想原理和代码实现
- 草料二维码&腾讯云HiFlow联合直播精彩回顾
- 【三】分布式训练---单机多卡与多机多卡组网(飞桨paddle2.0+)更加推荐spawn方式!
- 强化学习调参技巧一: DDPG算法训练动作选择边界值_分析解决
- Elasticsearch 架构设计及说明
- 强化学习调参技巧二:DDPG、TD3、SAC算法为例:
- Hessian 协议极简教程
- 【Ruby高级技术】在项目中使用多线程之后的一系列问题解决方案-同步控制、异常处理、死锁处理
- VSCode 插件 Project Manager 管理项目