Java集合框架源码分析之LinkedHashMap详解 Java集合框架中的LinkedHashMap是HashMap的子类,它继承了HashMap的存储结构,但引入了一个双向链表的头结点,将所有put到LinkedHashMap的节点连接成一个双向循环链表,从而保留了节点插入的顺序,使节点的输出顺序与输入顺序相同。 LinkedHashMap的简介 -------------------- LinkedHashMap是Java集合框架中的一种重要数据结构,它继承了HashMap的存储结构,但引入了一个双向链表的头结点,将所有put到LinkedHashMap的节点连接成一个双向循环链表。这样,LinkedHashMap可以保留节点插入的顺序,使节点的输出顺序与输入顺序相同。 LinkedHashMap的源码剖析 ------------------------ ### 构造方法 LinkedHashMap的构造方法可以分为五种: * `public LinkedHashMap(int initialCapacity, float loadFactor)`: 带有初始容量和加载因子的构造方法,链表中的元素默认按照插入顺序排序。 * `public LinkedHashMap(int initialCapacity)`: 带有初始容量的构造方法,加载因子取默认的0.75f,链表中的元素默认按照插入顺序排序。 * `public LinkedHashMap()`: 无参构造方法,加载因子取默认的0.75f,容量取默认的16,链表中的元素默认按照插入顺序排序。 * `public LinkedHashMap(Map<? extends K, ? extends V> m)`: 带有子Map的构造方法,同样调用HashMap的对应的构造方法,链表中的元素默认按照插入顺序排序。 * `public LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder)`: 带有初始容量、加载因子和访问顺序的构造方法,可以指定链表中的元素排序的规则。 ### init方法 LinkedHashMap的init方法是覆写了HashMap中的init方法,该方法在父类的构造方法和Clone、readObject中在插入元素前被调用,用于初始化一个空的双向循环链表,头结点中不保存数据,头结点的下一个节点才开始保存数据。 ### transfer方法 LinkedHashMap的transfer方法是覆写了HashMap中的transfer方法,该方法在父类的resize方法中被调用,用于扩容后,将key-value对重新映射到新的newTable中。覆写该方法的目的是为了提高复制的效率,充分利用双向循环链表的特点进行迭代,不用对底层的数组进行for循环。 LinkedHashMap的应用 -------------------- LinkedHashMap可以用来实现LRU算法,这会在下面的源码中进行分析。LinkedHashMap同样是非线程安全的,只在单线程环境下使用。 总结 ---------- 本文主要介绍了Java集合框架中的LinkedHashMap,包括其简介、源码剖析和应用。LinkedHashMap继承了HashMap的存储结构,但引入了一个双向链表的头结点,将所有put到LinkedHashMap的节点连接成一个双向循环链表,从而保留了节点插入的顺序,使节点的输出顺序与输入顺序相同。


















- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- javaJME技术的数独手机游戏的设计方案与实现.doc
- Partnering项目管理模式探析.docx
- 计算机信息系统集成资质认证申报资料汇总.doc
- 信息化管理目标及措施.docx
- 人工智能:未来社会钥匙.docx
- 网络自主和互动学习模式与高校英美文学课程的教学.docx
- 基于多目标优化算法的交叉路口信号灯配时模型研究.docx
- 无线数据采集系统技术指标及应用.doc
- 计算机应用软件开发过程中不同编程语言的影响研究.docx
- 通信工程概预算测验考试测验考试与答案(题与专业题).doc
- 单片机毕业设计方案单片机设计方案的红外线遥控器.doc
- 新代系统DOS-FTP联网应用.docx
- 基于OPNET的NTDR网络建模与仿真研究.docx
- DINP 中的 Agent 部署于所有计算节点并收集节点运行时数据
- 软件项目验收标准.docx
- 子帆学校心理评估系统网络版培训手册.doc


