java jdk1.8 hashmap源码阅读笔记(一)

java jdk1.8 hashmap源码阅读笔记(一)

ID:14388123

大小:140.50 KB

页数:8页

时间:2018-07-28

java jdk1.8 hashmap源码阅读笔记(一)_第1页
java jdk1.8 hashmap源码阅读笔记(一)_第2页
java jdk1.8 hashmap源码阅读笔记(一)_第3页
java jdk1.8 hashmap源码阅读笔记(一)_第4页
java jdk1.8 hashmap源码阅读笔记(一)_第5页
资源描述:

《java jdk1.8 hashmap源码阅读笔记(一)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JavaJdk1.8HashMap源码阅读笔记(一)一、结构publicclassHashMapextendsAbstractMapimplementsMap,Cloneable,Serializable1、抽象类AbstractMappublicabstractclassAbstractMapimplementsMap一、结构publicclassHashMapextendsAbstractMapimplementsMap,Cloneable,Serializable1、抽象类Abstract

2、MappublicabstractclassAbstractMapimplemen该类代码很简单,不再赘述。2、序列化接口:Serializable该接口没有什么好说的,但通过该接口,就解释了为什么HashMap总一些字段是用transient来修饰。一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。二、阅读JDK中类注释1、HashMap是无序的如果希望保持元素的输入顺序应该使用LinkedHashMap2、除了非同步和允许使用null之外,HashMap与Hashtable基本一致。此处的非同步指的是多线程访问

3、,并至少一个线程修改HashMap结构。结构修改包括任何新增、删除映射,但仅仅修改HashMap中已存在项值得操作不属于结构修改。3、初始容量与加载因子是影响HashMap的两个重要因素。publicHashMap(intinitialCapacity,floatloadFactor)初始容量默认值:/***Thedefaultinitialcapacity-MUSTbeapoweroftwo.*/staticfinalintDEFAULT_INITIAL_CAPACITY=1<<4;//aka16加载因子默认值:/***Theloadfactorusedwhennones

4、pecifiedinconstructor.*/staticfinalfloatDEFAULT_LOAD_FACTOR=0.75f;容量是HashMap在创建时“桶”的数量,而初始容量是哈希表在创建时分配的空间大小。加载因子是哈希表在其容量自动增加时能达到多满的衡量尺度(比如默认为0.75,即桶中数据达到3/4就不能再放数据了)。默认0.75这是时间和空间成本上一种折衷:增大负载因子可以减少Hash表(就是那个Entry数组)所占用的内存空间,但会增加查询数据的时间开销,而查询是最频繁的的操作(HashMap的get()与put()方法都要用到查询);减小负载因子会提高数据

5、查询的性能,但会增加Hash表所占用的内存空间。。4、存储形式(树形存储在treemap中再探讨)链表形式存储?树形结构?*Thismapusuallyactsasabinned(bucketed)hashtable,but*whenbinsgettoolarge,theyaretransformedintobinsof*TreeNodes,eachstructuredsimilarlytothosein*java.util.TreeMap.Mostmethodstrytousenormalbins,but*relaytoTreeNodemethodswhenapplica

6、ble(simplybychecking*instanceofanode).三、源码阅读1、添加元素/***Associatesthespecifiedvaluewiththespecifiedkeyinthismap.*Ifthemappreviouslycontainedamappingforthekey,theold*valueisreplaced.**@paramkeykeywithwhichthespecifiedvalueistobeassociated*@paramvaluevaluetobeassociatedwiththespecifiedkey*@ret

7、urnthepreviousvalueassociatedwithkey,or*nulliftherewasnomappingforkey.*(Anullreturncanalsoindicatethatthemap*previouslyassociatednullwithkey.)*/publicVput(Kkey,Vvalue){returnputVal(hash(key),key,value,false

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。