- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java Jdk1.8 HashMap源码阅读笔记(一)精选
Java Jdk1.8 HashMap源码阅读笔记(一)
一、结构
public class HashMapK,V extends AbstractMapK,V
implements MapK,V, Cloneable, Serializable
1、抽象类AbstractMap
public abstract class AbstractMapK,V implements MapK,V
一、结构
public class HashMapK,V extends AbstractMapK,V
implements MapK,V, Cloneable, Serializable
1、抽象类AbstractMap
public abstract class AbstractMapK,V implemen该类代码很简单,不再赘述。
2、序列化接口:Serializable
该接口没有什么好说的,但通过该接口,就解释了为什么HashMap总一些字段是用transient来修饰。
一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
二、阅读JDK中类注释
1、HashMap是无序的
如果希望保持元素的输入顺序应该使用LinkedHashMap
2、除了非同步和允许使用null之外,HashMap与Hashtable基本一致。
此处的非同步指的是多线程访问,并至少一个线程修改HashMap结构。结构修改包括任何新增、删除映射,但仅仅修改HashMap中已存在项值得操作不属于结构修改。
3、初始容量与加载因子是影响HashMap的两个重要因素。
public HashMap(int initialCapacity, float loadFactor)
初始容量默认值:
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 4; // aka 16
加载因子默认值:
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;
容量是HashMap在创建时“桶”的数量,而初始容量是哈希表在创建时分配的空间大小。加载因子是哈希表在其容量自动增加时能达到多满的衡量尺度(比如默认为0.75,即桶中数据达到3/4就不能再放数据了)。
默认0.75这是时间和空间成本上一种折衷:增大负载因子可以减少 Hash 表(就是那个 Entry 数组)所占用的内存空间,但会增加查询数据的时间开销,而查询是最频繁的的操作(HashMap 的 get() 与 put() 方法都要用到查询);减小负载因子会提高数据查询的性能,但会增加 Hash 表所占用的内存空间。 。
4、存储形式
(树形存储在treemap中再探讨)
链表形式存储?树形结构?
* This map usually acts as a binned (bucketed) hash table, but
* when bins get too large, they are transformed into bins of
* TreeNodes, each structured similarly to those in
* java.util.TreeMap. Most methods try to use normal bins, but
* relay to TreeNode methods when applicable (simply by checking
* instanceof a node).
三、源码阅读
1、添加元素
/**
* Associates the specified value with the specified key in this map.
* If the map previously contained a mapping for the key, the old
* value is replaced.
*
* @param key key with which the specified value is to be associated
* @param value value to be associated with the s
您可能关注的文档
- he-said-i-was-hard-working课件13精选.ppt
- he-said-i-was-hard-working课件6精选.ppt
- HDPE管材焊机使用手册(中文)精选.ppt
- Heat Treatment of Steels and Metallic Materials-J. Ernesto Indacochea-Illinois Uni at Chicago精选.pdf
- HC21K化纤染色试验编织机精选.doc
- heatstress热应力-高温作业精选.ppt
- Her-2资料精选.doc
- HERO3中文说明书精选.pdf
- Help精选.doc
- Hex-六角棋AI初步设计(算法复杂度分析)精选.pdf
最近下载
- 中国数字疗法行业白皮书.docx VIP
- 实施指南《GB_T28835-2012国际物流责任保险国际货运代理人责任险基本要素》实施指南.docx VIP
- 数字疗法白皮书2.0:当风轻借力,一举入高空.pptx VIP
- 新22J03 外装修-标准图集.docx VIP
- 数字政府建设背景下的政务服务优化研究——以宁波市为例.docx VIP
- 人力资源企业管理 - 李宁品牌视觉识别VI手册.pdf VIP
- 全站仪和全站测量课件.pptx VIP
- 《中国数字疗法白皮书2.0》:从研发到商业全流程挖掘关键成功因素 _ 界面 · 财经号.pdf VIP
- FG公司诉刚果金)案终审判决.doc VIP
- 新解读《GB_T 28835-2012国际物流责任保险 国际货运代理人责任险基本要素》.pptx
文档评论(0)