Map-Resize | 学习笔记-阿里云开发者社区

开发者社区> 学堂小助手> 正文

Map-Resize | 学习笔记

简介: 快速学习 Map-Resize。
+关注继续查看

开发者学堂课程【Java面试疑难点串讲1:面试技巧及语言基础:Map-Resize 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/489


Map-Resize


内容介绍

一、 Map-Resize


一、 Map-Resize

HishMap 需要 resize 时扩容因子是如何得到的?

如果要想解决这个问题还是需要去进行源代码的深入研究,也就是说对于基本的数据结构(类集)。

在进行数据添加的时候这个里面存在有一个 put() 方法。

public V put(K key,V value) {

return putVal(hash(key),key,value,false,true);

}

put() 方法里面可以发现有一个 putVal() 方法,而且可以发现这个方法首先进行了hash 计算(查找),而后在这个方法的实现定义。

if(oldCap>0) {

if(oldCap>=MAXIMUM_CAPACITY) {    //是否大于了最大的容量

threshold=Integer.MAX_VALUE;      //将其设置为整型最大

return oldTab;

}                                   //如果没有超过容量

 else if((newCap=oldCap<<1)

oldCap>=DEFAULT_INITIAL_CAPACITY)

newThr=oldThr<<1; // double threshold

}

else if(oldThr>0) // initial capacity was placed in threshold

newCap=oldThr;

else {             // zero initial threshold signifies using defaults

newCap=DEFAULT_INITIAL_CAPACITY;

newThr=(int)(DEFAULT_LOAD_FACTOR*DEFAULT_INITIAL_CAPACITY);

}

它的容量扩充指的是一开始放30个,如果发现不够了,则进行移位处理,30*2,那么再一次扩充30*2*2。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DevExpress学习01——下载与安装
记得刚接触编程时,虽然实现了功能,但用户界面十分丑陋,老师叫我们美化一下界面,不要千篇一律,当时觉得能够写出来功能就洋洋得意了,不觉得界面丑陋。后来,在程序比赛中,我接触了一种第三方控件,它可以快速实现控件、皮肤的美化,它就是以前常用的DotNetBar,其入门使用方法见:http://www.cnblogs.com/liweis/p/4195070.html DotNetBar下载地址: 早就听说了DevExpress比较强大了,今天终于来尝试一把。
1420 0
Android学习之Bitmap
Android系统提供了ImageView显示普通静态图片,也提供了AnimationDrawable来开发逐帧动画。 Bitmap和BitmapFactory Bitmap代表一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象。 如果android应用需要访问其他存储路径如SD卡的图片,则需要使用BitmapFactory来解析、创建Bitmap对象。 由
1149 0
Presto 访问 OSS 透明缓存加速 | 学习笔记
快速学习 Presto 访问 OSS 透明缓存加速。
16 0
【OpenCV学习】Bresenham算法
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ /* * ===================================================================================== * * Filename: linebresenham2.
706 0
Java集合源码学习(四)HashMap分析
ArrayList、LinkedList和HashMap的源码是一起看的,横向对比吧,感觉对这三种数据结构的理解加深了很多。 数据结构中有数组和链表来实现对数据的存储,这两者有不同的应用场景, 数组的特点是:寻址容易,插入和删除困难;链表的特点是:寻址困难,插入和删除容易; 哈希表的实现结合了这两点,哈希表的实现方式有多种,在HashMap中使用的是链地址法,也就是拉链法。
1509 0
1394
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载