二级域名网站如何,南京网站开发南京乐识专心,app免费制作平台下载,企业网站深圳一、本期教学目标
学习LinkedHashMap集合的概念及特点。学习LinkedHashMap存储结构。学习LinkedHashMap集合常用方法及示例代码演示。
二、正文
1、概述 我们学习了map接口之HashMap集合#xff0c;今天我们要来学习map接口的另一个实现类-LinkedHashMap#xff0c;不知道…一、本期教学目标
学习LinkedHashMap集合的概念及特点。学习LinkedHashMap存储结构。学习LinkedHashMap集合常用方法及示例代码演示。
二、正文
1、概述 我们学习了map接口之HashMap集合今天我们要来学习map接口的另一个实现类-LinkedHashMap不知道你们还记得我在一开始介绍Map集合的时候就有提过这个集合它也是在日常项目开发中必须要掌握的一个双列集合也是在日常面试中的高频题如果你没掌握相对面试还是处于弱势的。 听我这么一说很能很多小伙伴就会非常的好奇了那LinkedHashMap究竟是啥那就由我来给大家进行一个全面的讲解吧。 LinkedHashMap集合我们先来看下它的类结构定义请看如下
public class LinkedHashMapK,V extends HashMapK,V implements MapK,V{} 不难看出它是HashMap的子类所以对于LinkedHashMap自然继承HashMap的所有特性。例如linkedHashMap的元素存取过程与HashMap集合的存取过程基本类似只是说在细节上实现会稍有不同这也是取决于LinkedHashMap本身的特性所决定的因为LinkedHashMap要额外维护一个双向链表。 对于LinkedHashMap见名知意它是具有hash散列的功能 同时也具备元素顺序。总而言之LinkedHashMap就是一个标准的HashMap与LinkedList的融合体。
2、特点 那我们说完LinkedHashMap接下来肯定就要对它的特点做一个了解这也是为了让大家更好的掌握。
LinkedHashMap的存储单元类型使用了Entry类作为存储类继承自HashMap的node类Entry类添加了before和after两个前后指针。LinkedHashMap使用的数据结构有数组、单向链表、双向链表、红黑树。LinkedHashMap的初始容量大小、负载因子默认下大小、负载因子和HashMap一样。LinkedHashMap是非线程安全的。并发出错时会快速失败抛出该异常ConcurrentModificationException。... ...
3、相关源码概念解释
transient LinkedHashMap.EntryK,V head;
解释头结点同时也是最早插入的节点。
transient LinkedHashMap.EntryK,V tail;
解释尾结点同时也是最后插入的节点。
static class EntryK,V extends HashMap.NodeK,V {};
解释继承 Node为数组的每个元素增加了 before 和 after 属性。
final boolean accessOrder;
解释控制两种访问模式的字段默认 false。true表示按照访问顺序会把经常访问的 key 放到队尾。false表示按照插入顺序提供访问
4、实例演示 接下来就是实战环节了对于一个集合最关心的就是它的遍历方式了对于LinkedHashMap集合它的遍历方式也跟HashMap遍历一致比如通过keySet()按键取值方式也可以根据entrySet()方法或者就是使用Iterator迭代器。 如下我就给大家演示一下如何entrySet()方法来进行map遍历吧。像其他的遍历方式这个就当布置课后作业自行完成了哈。
演示代码如下 Testpublic void testLinkedHashMap() {//创建一个LinkedHashMap集合MapString, String map new LinkedHashMap();//添加元素map.put(黄忠, 射手);map.put(吕布, 战士);map.put(妲己, 法师);SetMap.EntryString, String entrySet map.entrySet();for (Map.EntryString, String entry : entrySet) {//解析entry对象String key entry.getKey();String value entry.getValue();System.out.println(key 所对应的值为 value);}}
控制台输出结果
黄忠所对应的值为射手
吕布所对应的值为战士
妲己所对应的值为法师 而且有一点需要大家注意的不知道大家发现了没有输出结果跟我put顺序完全一致这也就是证实了一点LinkedHashMap的插入有序的(根据按插入顺序来顺序取出元素)而HashMap是无序。 可以请大家再看个实例如下: