参考自:跳转

HashMap和LinkedHashMap属于线程不安全的
HashTable属于线程安全

再来看看HashMap和LinkedHashMap的结构图,是不是秒懂了。LinkedHashMap其实就是可以看成HashMap的基础上,多了一个双向链表来维持顺序。


其他:
LinkedHashMap的一个特点,通过afterNodeAccess(e);方法,将最近最常使用的元素,移动到双向链表的尾部,这也被用于Android中LruCache的图片缓存机制,最少使用算法,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除
get和put(使用的HashMap的)方法中会调用afterNodeAccess(e)


// 此链接的哈希映射的迭代排序方法:
final boolean accessOrder;public V get(Object key) {Node<K,V> e;if ((e = getNode(hash(key), key)) == null)return null;if (accessOrder)afterNodeAccess(e);return e.value;
}// 将元素移动到末尾
void afterNodeAccess(Node<K,V> e) { // move node to lastLinkedHashMap.Entry<K,V> last;if (accessOrder && (last = tail) != e) {LinkedHashMap.Entry<K,V> p =(LinkedHashMap.Entry<K,V>)e, b = p.before, a = p.after;p.after = null;if (b == null)head = a;elseb.after = a;if (a != null)a.before = b;elselast = b;if (last == null)head = p;else {p.before = last;last.after = p;}tail = p;++modCount;}
}

HashMap与LinkedHashMap的结构对比相关推荐

  1. HashMap、LinkedHashMap、TreeMap的深入认识

    HashMap,LinkedHashMap,TreeMap都属于Map. Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复. HashMap 是一个最 ...

  2. 彻底理解HashMap及LinkedHashMap

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/104355841 Ha ...

  3. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)

    关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍   Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...

  4. 有序的HashMap:LinkedHashMap

    我们知道HashMap这个数据结构根据一个指定的值查找的时间复杂度是O(1),但是有一个问题就是HashMap是无序的比如你放进去第一个值A,但是遍历Map获取到对应的位置可能是第五个位置.那有时候我 ...

  5. HashMap和LinkedHashMap的比较使用

    由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import java.util.Iterator; import ...

  6. java linkedhashmap_java学习-hashMap和linkedHashMap

    1.hashMap和linkedHashMap和treeMap 1 * LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. 2 * HashMap无序:Link ...

  7. 深入理解HashMap和LinkedHashMap的区别

    文章目录 简介 LinkedHashMap详解 插入 访问 removeEldestEntry 总结 深入理解HashMap和LinkedHashMap的区别 简介 我们知道HashMap的变量顺序是 ...

  8. 云图说|DAS表结构对比与同步,实现您多个数据库管理心愿

    数据库生产环境与测试环境不一致? 主表分库分表后,结构变化,分表只能手动改? 测试环境,快速复制,功能怎么不受影响? 华为云数据管理服务DAS,表结构对比与同步功能帮您一键轻松解决 下面通过" ...

  9. TreeMap、HashMap、LinkedHashMap的区别

    TreeMap.HashMap.LinkedHashMap的区别:

  10. 在线的MySQL数据库表结构对比工具

    在项目部署上线前,测试版和正式版的数据库表结构做过哪些变更,如果没有做好实时记录,那么就需要对比找出差异,否则代码部分更新后,可能导致功能异常. 数据库表结构对比的工具很多,但是为了方便部署同步的,这 ...

最新文章

  1. 直面问题,咱谈焦虑、谈烦恼、谈如何成长
  2. 雷林鹏分享:XML 命名空间
  3. 网络层IP路由的负载均衡实现思路
  4. 给定链表中间某结点指针,删除链表中该结点
  5. linux python matplotlib 使用,关于Linux:如何在Python的matplotlib中设置“后端”?
  6. AKS开讲啦! | DevOps with AKS
  7. spring social_Spring Social入门
  8. 应用实践 | 网络智能运维下的知识图谱
  9. linux ftp下载函数函数,FTP下载的函数
  10. 再谈 document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
  11. Ubuntu系统安装字体方法
  12. 应急管理大数据ppt_大数据应急管理.doc
  13. 小米笔记本pro黑苹果原厂intel蓝牙亲测可用!!
  14. 黑苹果16g内存够用吗_刚脱坑黑苹果,给想装黑苹果的几个建议
  15. 软交换总结之二-七号信令
  16. 根据出生年月日计算出生了多少年,多少月,多少天
  17. 《随便测测》WEB接口测试平台
  18. 使用Spring实现读写分离(MySQL实现主从复制)
  19. 全网都在求的「蚂蚁呀嘿」教程--基于PaddleGAN的First order motion model实现
  20. ajax传cookie,为什么jquery的.ajax()方法没有发送我的会话cookie?

热门文章

  1. 华为开通api服务_入冬第一场技术盛宴!DevRun开发者沙龙华为云武汉专场举办
  2. Android下最简单的AudioTrack播放PCM的例子
  3. 关于对H264码流的PS的封装的相关代码实现
  4. Sofia-SIP辅助文档三 - 编码指南
  5. H264的视频格式H264支持4:2:0的连续或隔行视频的编码和解码
  6. ubuntu11.10 sources.list 资源
  7. H264的RTP负载打包的数据包格式,分组,分片
  8. html+css网页设计源码_【技术篇前端】用html+css实现简化版孙膑kpl皮肤页面(内含源码)...
  9. win8虚拟机_VMware15虚拟机软件安装包+安装教程
  10. OpenCV图像处理基础操作(4)