详解详解Java中中LinkedHashMap
本文主要介绍了Java中LinkedHashMap的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
初识初识LinkedHashMap
大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代迭代HashMap的的
顺序并不是顺序并不是HashMap放置的顺序放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的
Map。
这个时候,LinkedHashMap就闪亮登场了,它虽然增加了时间和空间上的开销,但是通过维护一个运行于所有条目的双向链通过维护一个运行于所有条目的双向链
表,表,LinkedHashMap保证了元素迭代的顺序。保证了元素迭代的顺序。
四个关注点在四个关注点在LinkedHashMap上的答案上的答案
关 注 点 结 论
LinkedHashMap是否允许空 Key和Value都允许空
LinkedHashMap是否允许重复数
据
Key重复会覆盖、Value允许重
复
LinkedHashMap是否有序 有序
LinkedHashMap是否线程安全 非线程安全
LinkedHashMap基本结构基本结构
关于LinkedHashMap,先提两点:
1、LinkedHashMap可以认为是HashMap+LinkedList,即它既使用HashMap操作数据结构,又使用LinkedList维护插入元素
的先后顺序
2、LinkedHashMap的基本实现思想就是----多态多态。可以说,理解多态,再去理解LinkedHashMap原理会事半功倍;反之也
是,对于LinkedHashMap原理的学习,也可以促进和加深对于多态的理解。
为什么可以这么说,首先看一下,LinkedHashMap的定义:
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
{
...
}
看到,LinkedHashMap是HashMap的子类,自然LinkedHashMap也就继承了HashMap中所有非private的方法。再看一下
LinkedHashMap中本身的方法: