zoukankan      html  css  js  c++  java
  • Java中的集合(十四) Map的实现类LinkedHashMap

     Java中的集合(十四) Map的实现类LinkedHashMap

    一、LinkedHashMap的简介

    LinkedHashMap是Map接口的实现类,继承了HashMap,它通过重写父类相关的方法,来实现自己的链接列表特性。但是很多方法都直接复用了父类HashMap的方法。底层数据结构是哈希表+双向链表,具有可预知的迭代顺序。允许使用null值和null键存储。

     LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。

    注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

    (一)、LinkedHashMap与Map的关系

    二、LinkedHashMap的继承结构

        

     从LinkedHashMap继承结构可以看出,LinkedHashMap与HashMap类似,可参考 Java集合(十)实现Map接口的HashMap

    三、LinkedHashMap的构造方法

    四、LinkedHashMap主要成员属性

    LinkedHashMap定义了几个主要的成员属性:head、tail、accessOrder。

    1、head

    是一个Entry<K,V>类型,维护的是链表的头部元素。

    2、tail

    是一个Entry<K,V>类型,维护的是链表的尾部部元素。

    3、accessOrder

    排序模式,是boolean类型,当为true时,记录访问顺序,为false时,记录插入顺序。

    4、LinkedHashMap.Entry

    Entry是LinkedHashMap定义的内部类,继承了 HashMap.Node<K,V>,该Entry除了保存当前对象的引用外,还保存了其上一个元素before和下一个元素after的引用,从而在哈希表的基础上又构成了双向链接列表。

    五、LinkedHashMap常用API

    LinkedHashMap与HashMap类似,可参考 Java集合(十)实现Map接口的HashMap

    六、LinkedHashMap的遍历

    LinkedHashMap与HashMap类似,可参考 Java集合(十)实现Map接口的HashMap

    七、LinkedHashMap和HashMap的异同

    (一)、相同点

      • 都是非同步,线程不安全的。
      • 负载因子(0.75)和默认初始容量(16)相同。
      • 扩容方式相同(容量 * 负载因子)。

    (二)、不同点

      • HashMap无序,LinkedHashMap有序。
  • 相关阅读:
    delphi string 到excel
    VS 快捷键
    delphi Tform 释放
    cxSplitter 收缩和展开
    delphi 加载inc文件
    delphi TcxPageControl 动态嵌入窗体
    修改tomcat-users.xml 失效的问题
    TCXGRID 属性解释
    suse 设置ftp服务器
    用正则表达式修改html字符串的所有div的style样式
  • 原文地址:https://www.cnblogs.com/lingq/p/12892377.html
Copyright © 2011-2022 走看看