我们知道HashMap这个数据结构根据一个指定的值查找的时间复杂度是O(1),但是有一个问题就是HashMap是无序的比如你放进去第一个值A,但是遍历Map获取到对应的位置可能是第五个位置。那有时候我们会要求能像Map一样直接取的,但是它整体遍历下来还能是一个有顺序的数据结构。

有没有这样的数据结构呢?有,这就是LinkedHashMap。

LinkedHashMap在结构上是hashmap+双向链表的一个数据结构,HashMap就是存数据该咋存数据还是怎么存的,但是额外维护一个双向链表来存先后数据,最后遍历的时候实际要以这个双向链表为准。

关于LinkedHashMap的几个问题:

(1)LinkedHashMap是线程安全的吗?
不是,貌似关于Map的线程安全的应该常见的只有CurrentHashMap,靠着CAS,旧值和新值比较的那种实现的。

(2)LinkedHashMap怎么做到遍历是有序的?
相当于LinkedHashMap是自己重写的重写HashMap 的迭代器,用它维护的双向链表进行迭代输出。

(3)访问速度怎么样?
肯定比不过正常的HashMap,毕竟多维护一个双向链表。

有序的HashMap:LinkedHashMap相关推荐

  1. 有序的hashmap (linkedhashmap) 测试及原理

    1.一切从代码开始 public class LinkedHashMap {public static void main(String[] args){Map<String,String> ...

  2. Hashtable TreeMap HashMap LinkedHashMap的区别

    Hashtable TreeMap HashMap LinkedHashMap的区别 Hashtable TreeMap HashMap LinkedHashMap详解 Hashtable 1.内部存 ...

  3. 集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap

    集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap 一.比较器接口 1.内置比较器 – Comparable import ...

  4. 有序的map LinkedHashMap

    HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺 ...

  5. Java中的Map集合及其子类HashMap,LinkedHashMap,TreeMap,ConcurrentHashMap

    一 .Map public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口哦取代了Dictionary类,后者完全是 ...

  6. java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...

  7. HashMap, LinkedHashMap 和 TreeMap的区别

    HashMap, LinkedHashMap 和 TreeMap的区别 Java里面的HashMap, LinkedHashMap 和 TreeMap 有什么区别?我看不出以下3个key和value有 ...

  8. JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类

    一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...

  9. 集合,ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurremtHashMap分别的总结,volatile 关键字的使用

    可以加入资源分享讨论群769674658,296389054 备注Jon_jing 1    集合 1.1    List 1.1.1    ArrayList      动态数组     实现lis ...

最新文章

  1. mongodb yum 安装
  2. @transactional 接口_Spring事物(@transactional注解)在什么情况下会失效,为什么?...
  3. 新疆大学ACM新生赛(公开赛)
  4. asp.net 使用Master模板页需要注意
  5. 牛客21312 神秘餐馆
  6. RMDB与hadoop的实时整合
  7. 创意书签名字_给书签作品起名字-给书签起名字
  8. 12.(地图数据篇)cesium城市建筑物贴图
  9. 华为手机鸿蒙系统卡吗,华为鸿蒙系统能解决手机卡顿吗 华为鸿蒙系统会不会卡顿...
  10. Ubuntu开机无桌面图标
  11. 室内定位之蓝牙定位精度(蓝牙RSSI定位)
  12. 云栖独栋别墅_绿野云溪花海独栋别墅
  13. python实现高校教务管理系统_Python实现新版正方教务系统爬虫
  14. Java中的byte[]/char[]/int/String数据类型转换
  15. 【北亚数据恢复】Hp DL380服务器raid磁盘故障导致数据库数据丢失的数据恢复案例
  16. win10 docker 启动 mysq MySQL Server. Supplied value : /var/lib/mysql-files
  17. 个人计算机和家用计算机的区别,量子计算机和普通计算机的区别
  18. 小熊派简介和环境搭建
  19. oracle中timestamp怎么用,Oracle Timestamp类型
  20. 解决方案 | 回归医院运营管理本质,从建立指标体系出发

热门文章

  1. Flowable(二):数据库详情
  2. AV夜话#4 李超:聊聊Chat-GPT
  3. 记一次失败的导师霸面
  4. 客户端文件与服务器不匹配,说客户端和服务器版本不一致,咋回事?
  5. activeMq 启动报 Wrapper Stopped
  6. python一元线性回归的优点_Python数据分析之一元线性回归
  7. macOS Big Sur 11.5.2 官方原装引导版镜像高速下载
  8. 19岁少年开发浏览器插件赚到10万美元
  9. 权力的游戏第八季在线观看
  10. 一个JavaScript写的黑白棋AI