首页 > 其他 > 详细

HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList原理

时间:2021-08-20 16:00:46      阅读:20      评论:0      收藏:0      [点我收藏+]

HashMap原理:

存储方式键值对,把键转为hashcode值存入链表头中,取值时候把key转为hashcode直接get到 ; jdk1.8: 超过6个元素就变成红黑树,小于等于则转为链表

LinkedHashMap原理:

双向链表根据插入Map先后顺序维护了一个双向链表的头尾head,tail;

还增加了 before,after 两个分别指向双向链表中前后节点的属性;

默认按照插入顺序排序:双向的就可以实现,当插入的元素就放在表头部;

访问的顺序:根据访问的数据移除掉,插入到尾部;

ConcurrentHashMap原理:

双数组链表map的结构,数组中存hashmap;

线程安全:Segment数组会加锁可支持16线程;

ArrayList原理:

动态数组自增长,非同步,有序的、实现了RandomAccess(可随机访问)Cloneable(可拷贝)Serializable(可序列化)   

长于随机访问元素,中间插入和移除元素比较慢,在插入时,必须创建空间并将它的所有引用向前移动,这会随着ArrayList的尺寸增加而产生高昂的代价,底层由数组支持。

底层原理:https://blog.csdn.net/weixin_36378917/article/details/81812210

LinkedList原理:

特点:有序的;

底层是双向链表插入移除快

查询慢:需要移动指针遍历整个表

通过代价较低的在List中间进行插入和删除操作,只需要链接新的元素,而不必修改列表中剩余的元素,无论列表尺寸如何变化,其代价大致相同,提供了优化的顺序访问,随机访问相对较慢,特性较ArrayList更大,而且还添加了可以使其作为栈、队列或双端队列的方法,底层由双向链表实现 

HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList原理

原文:https://www.cnblogs.com/yangzznice/p/15166322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!