集合类
文章平均质量分 94
酒剑随马@
努力变强
展开
-
LinkedHashMap简介
LinkedHashMap继承了HashMap类,默认情况下使用entryset获取的集合顺序是与节点的插入顺序一致的,需要特别指出的是,如果将要插入的节点key是已存在的,那么是不会对原顺序产生影响的。除去hashmap的逻辑之外,它其中维护了一个双向链表,头节点为head、尾节点为tail,默认是按照插入的顺序进行排列的,最先插入的节点(即最老的节点)为head.after,最新插入的节点为tail.before。LinkedHashMap中有一个参数为accessOrder,表示双向列表的排列顺序原创 2020-06-03 23:14:43 · 3400 阅读 · 0 评论 -
HashMap相关
我们知道hashmap的扩容因子是0.75如果hashmap的数组长度已经使用了75%就会引起扩容,会新申请一个长度为原来两倍的桶数组,然后将原数组的元素重新映射到新的数组中,原有数据的引用会逐个被置为null。就是在resize()扩容的时候会造成线程不安全。另外当一个新节点想要插入hashmap的链表时,在jdk1.8之前的版本是插在头部,在1.8后是插在尾部那么hashmap什么时候进行...原创 2019-06-13 22:47:25 · 7028 阅读 · 1 评论 -
concurrentHashMap及CopyOnWriteArrayList、Collections.synchronizedList
concurrentHashMap是线程安全的hashmap,在java1.8之前的版本,concurrentHashMap结构为一个segment数组默认初始长度为16,每一个segment都是一个hashmap,Segment继承了ReentranLock来加锁,它的put、remove操作都需要获取segment数组的reentranLock锁,get操作不加锁,因为每个键值对的value是...原创 2019-06-16 21:57:15 · 435 阅读 · 0 评论