EnumMap

Java集合:Map接口总结

故事扮演 提交于 2020-03-08 11:12:06
一、HashMap 基于哈希表的 Map 接口的实现,允许存入 null 值和 null 键,无序存储且线程不同步; HashMap 初始容量默认为16,扩容一定是2的指数,加载因子默认值为0.75; HashMap采用Iterator方式迭代,可直接迭代键值对; 迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。 建议多看源码,如果觉得晦涩可以戳 这里 看源码解析。 安利网址:http://www.admin10000.com/document/3322.html,个人觉得分析的挺好 JDK1.8+HashMap的改进 JDK1.8以前是采用的数组+链表形式存储,JDK1.8+是采用的是数组+链表/红黑树 JDK1.8+,当bucket节点数小于等于6时,转换为链表形式;当节点数大于等于8时,转换为红黑树形式 JDK1.8以前,HashMap的put()方法、get()源码如下: put(): public V put(K key, V value) { // HashMap允许存放null键和null值。 // 当key为null时,调用putForNullKey方法,将value放置在数组第一个位置。 if (key ==