有序的Map集合--LinkedHashMap

由于map集合时无序的,我们接触到最多的集合中只有List集合时有序的.通过查了查,发现有一种map(LinkedHashMap)集合时有序的,可以做到按照用户放入集合的顺序取出集合中的元素.

LinkedHashMap介绍:

简单的介绍一下。通过LinkedHashMap这个名字可以看出来这是个链表和哈希表的结合,链表是有顺序的,哈希表通常说是散列表,通过计算键的哈希值,用这个哈希值映射到表结构中,LinkedHashMap允许存储null值,基本的和HashMap一致,通过键找到值,键不可以重复,值可以重复。下图是LinkedHashMap的继承关系,继承于HashMap,所以基本的方法都是一致的。
有序的Map集合--LinkedHashMap_第1张图片

LinkedHashMap的实现:

底层和HashMap一致,用哈希表实现,区别是LinkedHashMap还使用了一个双向链表实现顺序存取,这个双向链表的实现依赖于Entry这个内部类,这个Entry内部类在集合中非常常见。通过查看Entry类中的方法实现也可以看出.

有序的Map集合--LinkedHashMap_第2张图片

在删除和增加时,都在修改前面的引用和后面的引用。

在HashMap中只是利用了哈希表,而LinkedHashMap中还用到了链表记录顺序,在LinkedHashMap中并没有put方法,而是利用了HashMap中的put方法,但是重写了put方法中调用的的addEntry()方法.

有序的Map集合--LinkedHashMap_第3张图片

有序的Map集合--LinkedHashMap_第4张图片 

通过上面方法的分析,可以看出在添加节点的时候(由于是双向链表)都会在尾部进行添加。

 转载于:https://blog.csdn.net/qq_38663729/article/details/78479786

 

 

 

你可能感兴趣的:(JAVA基础--,集合类)