位置: 编程技术 - 正文

HashMap类的理解(hashmap详细讲解)

编辑:rootadmin

推荐整理分享HashMap类的理解(hashmap详细讲解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:hashmap类的方法有哪些,hashmap有什么特点,hashmap类的方法,hashmap的实现原理,hashmap详细讲解,hashmap类的方法,hashmap详细讲解,hashmap中常用的方法总结,内容如对您有帮助,希望把文章链接给更多的朋友!

HashMap是一个散列表,它的存储内容是键&#;对。

紫色部分代表哈希表,每个元素后面都是一个单链表的头结点。

源码分析:

上面源码,

hashMap初始容量为4个,最大容量为2的次幂,增长因子为0.,在进行扩容时,扩容数量=增长因子*当前容量。第行,为对应的hash表

HashMapEntry对已的结构:

Put

1.当key为null时,在行先检测entryForNullKey是否为空

1.1 如果不为空,在行直接更新entryForNullKey的value,并返回对应的HashMapEntry。

1.2 如果为空,在行和行出,new 一个HashMapEntry,然后赋给entryForNullKey。

HashMap类的理解(hashmap详细讲解)

备注:key为null的时候,entryForNullKey是作为hashMap的一个变量,存储key为null的HashEntry的,并没有将key为null并入哈希表中

2.当key不为null时,通过key的hashcode找到哈希表中的index,然后遍历index位置下的链表,通过行的比较(通过hashcode和key的equals共同确认是否是需要找的entry)

2.1 如果找到,直接替换value

2.2 如果未找到

2.2.1 在行,比较是否需要扩容,下面是扩容的方法:在行,扩容时以当前容量的2倍进行扩容的。

2.2.2 然后通过addNewEntry方法,将新的entry加入到里面去。

2.2.3 在addNewEntry中,即行,直接是table[index]=new HashMapEntry,由此可见,每次put的Entry都在链头。

Remove

1.当key==null时,若entryForNullKey!=null,则直接将entryForNullKey=null。

2.当key!=null时,寻找entry的方式和put一样,最终通过比对hashcode以及equals比较,确认需要remove的entry。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android TabHost布局 Android之TabHost布局1.概念盛放Tab的容器就是TabHost。TabHost的实现有两种方式:第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内

Android 编程下 Touch 事件的分发和响应机制 Android中与Touch事件相关的方法包括:dispatchTouchEvent(MotionEventev)、onInterceptTouchEvent(MotionEventev)、onTouchEvent(MotionEventev);能够响应这些方法的控件包括:ViewG

Android 初始化之Zygote 系统整体框架了解android初始化之前,有必要了解一下系统的整体框架,下图是网上流传比较经典的架构图:android的启动主要是linux内核启动之后,init进

标签: hashmap详细讲解

本文链接地址:https://www.jiuchutong.com/biancheng/380963.html 转载请保留说明!

上一篇:Android 科大讯飞语音交互API简单使用(android 科大讯飞语音引擎 调用无响应)

下一篇:Android TabHost布局(android tabview)

  • 不用交增值税还用填附加税申报表吗
  • 残疾人保障金的工资按实发还是应发
  • 财务管理考试时间多长
  • 全额计提坏账准备后,多久核销应收账款
  • 无形资产摊销为什么计入管理费
  • 结转净利润到利润分配分录
  • 差额发票的税额怎么计算
  • 出口收汇核销单取消了吗
  • 租赁房屋房产税
  • 委托收款被拒绝后要怎么做
  • 微信公众订阅号怎么注册
  • 出口业务具体流程图
  • 企事业单位承包承租经营
  • 如何查询企业开票记录
  • 企业以前年度的亏损在哪查
  • 资产总额和净资产总额的区别
  • 运费营改增时间
  • 建筑公司异地预缴增值税
  • 本月发票有红充这月成本怎么做账?
  • 活动展开方式怎么写
  • 平均净资产计算公式是什么意思
  • exe是什么进程
  • 小微企业 记账
  • 定额发票属于什么会计
  • php导出数据到excel
  • vue slot标签
  • 销售费用中业务费包括哪些
  • fg726p.exe
  • PHP:iconv_strrpos()的用法_iconv函数
  • 免抵退税会计分录怎么写
  • 将资本公积转为实收资本什么变了
  • 当月已验旧的发票怎么开
  • SE注意力机制加在什么位置
  • 嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 | 文末赠书4本
  • 命令行修改mbr
  • vscode终端显示
  • python3.4 numpy
  • 合伙企业的经营所得税率
  • 织梦使用手册
  • 什么发票可以抵扣增值税吗
  • access 替换
  • 减征增值税的会计科目
  • 工资薪金可以抵扣增值税吗
  • 一般纳税人销售旧货
  • 库存股属于什么账户
  • 知识产权申请如何申请
  • 关于成本核算的论文
  • 小规模纳税人减按1%怎么计算
  • 接待客户的旅游活动
  • 测试费几分钱入账
  • 银行回单超过三个月可以补打吗
  • 如何理解其他权益工具
  • 收到投资款怎么做凭证
  • mysql远程访问不了
  • mysql5.7.22安装配置教程
  • centos 7.0截屏快捷键有冲突该怎么更换?
  • centos启动不了图形界面
  • winXP运行内存查看
  • 这张图告诉我们什么道理
  • alp是什么文件
  • win10用着怎么样
  • mac电脑apple id
  • mac如何打印文件
  • scchost.exe - scchost是什么进程 有什么用
  • 升级win10之后东西不见了
  • win8.1操作界面
  • 怎么提升win7性能
  • SpriteBuilder Demo学习笔记
  • js如何使用
  • Lesson01_05 HTML中的超链接
  • nodejs 文档
  • 改变图片透明度怎么调
  • nodejs处理excel
  • node socket hang up
  • jquery属性选择器的基本
  • javascript面向对象精要pdf
  • python3 heapq
  • python如何编程
  • 德勤 税务
  • 所有企业都要做应急预案吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设