Map数据结构相比较List而言无疑在底层实现变的更复杂了一些,Map系列的源码学习尝试从最基本最常用的HashMap成员开始。其中设计思路部分取自于JDK1.8HashMap源码中英文的翻译,这部分内容感觉对HashMap的源码整体实现的学习和理解还是有一定帮助,值得一看。
HashMap 设计思路
初试容量和负载因子
HashMap基于哈希表的Map接口实现,并允许null键和null值。 (HashMap类大致相当于Hashtable,除了它是不同步的并允许null)。这个类不保证映射的顺序。这个实现提供了基本操作(get和put)的恒定时间性能,假设散列函数在桶中正确地分散条目。 对集合视图的迭代时间与HashMap实例的容量和键值映射的数量相关。 因此,如果要求迭代性能较好,不要将初始容量设置得太高(或负载系数太低),这一点非常重要。