位置: 编程技术 - 正文
推荐整理分享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。
备注: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 转载请保留说明!友情链接: 武汉网站建设