有序的HashMap:LinkedHashMap
我们知道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相关推荐
- 有序的hashmap (linkedhashmap) 测试及原理
1.一切从代码开始 public class LinkedHashMap {public static void main(String[] args){Map<String,String> ...
- Hashtable TreeMap HashMap LinkedHashMap的区别
Hashtable TreeMap HashMap LinkedHashMap的区别 Hashtable TreeMap HashMap LinkedHashMap详解 Hashtable 1.内部存 ...
- 集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap
集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap 一.比较器接口 1.内置比较器 – Comparable import ...
- 有序的map LinkedHashMap
HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺 ...
- Java中的Map集合及其子类HashMap,LinkedHashMap,TreeMap,ConcurrentHashMap
一 .Map public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口哦取代了Dictionary类,后者完全是 ...
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...
- HashMap, LinkedHashMap 和 TreeMap的区别
HashMap, LinkedHashMap 和 TreeMap的区别 Java里面的HashMap, LinkedHashMap 和 TreeMap 有什么区别?我看不出以下3个key和value有 ...
- JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类
一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...
- 集合,ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurremtHashMap分别的总结,volatile 关键字的使用
可以加入资源分享讨论群769674658,296389054 备注Jon_jing 1 集合 1.1 List 1.1.1 ArrayList 动态数组 实现lis ...
最新文章
- mongodb yum 安装
- @transactional 接口_Spring事物(@transactional注解)在什么情况下会失效,为什么?...
- 新疆大学ACM新生赛(公开赛)
- asp.net 使用Master模板页需要注意
- 牛客21312 神秘餐馆
- RMDB与hadoop的实时整合
- 创意书签名字_给书签作品起名字-给书签起名字
- 12.(地图数据篇)cesium城市建筑物贴图
- 华为手机鸿蒙系统卡吗,华为鸿蒙系统能解决手机卡顿吗 华为鸿蒙系统会不会卡顿...
- Ubuntu开机无桌面图标
- 室内定位之蓝牙定位精度(蓝牙RSSI定位)
- 云栖独栋别墅_绿野云溪花海独栋别墅
- python实现高校教务管理系统_Python实现新版正方教务系统爬虫
- Java中的byte[]/char[]/int/String数据类型转换
- 【北亚数据恢复】Hp DL380服务器raid磁盘故障导致数据库数据丢失的数据恢复案例
- win10 docker 启动 mysq MySQL Server. Supplied value : /var/lib/mysql-files
- 个人计算机和家用计算机的区别,量子计算机和普通计算机的区别
- 小熊派简介和环境搭建
- oracle中timestamp怎么用,Oracle Timestamp类型
- 解决方案 | 回归医院运营管理本质,从建立指标体系出发