JavaSE集合类
文章平均质量分 90
Adrian_Dai
学习永无止境,多读书才能有所提升
展开
-
WeakHashMap
1.概述 WeakHashMap 是一种弱引用 Map,内部的 key 会存储为弱引用,当 JVM gc 的时候,如果这些 key 没有强引用存在的话,会被gc回收掉,下一次当我们操作 Map (增删改)的时候会把对应的 Entry 整个删除掉,基于这种特性,WeakHashMap 特别适用于缓存处理2.存储结构 WeakHashMap 因为gc的时候会把没有强引用的key回收掉,所以注定了它里面的元素不会太多,因此也就不需要像HashMap那样元素多的时候转化为红黑树来处理了。因此,WeakHa原创 2021-04-15 00:12:49 · 338 阅读 · 0 评论 -
ArrayList的底层实现
ArrsyList底层实现原理 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableRandomAccess标识其支持快速随机访问;Cloneable标识其支持对象复制;S...原创 2018-03-04 17:16:36 · 470 阅读 · 0 评论 -
ArrayList和LinkedList和Vector
ArrayList是为可变数组实现的,当更多的元素添加到ArrayList的时候,它的大小会动态增大。它的元素可以通过get/set方法直接访问,因为ArrayList本质上是一个数组。LinkedList是为双向链表实现的,添加、删除元素的性能比ArrayList好,但是get/set元素的性能较差。Vector与ArrayList相似,但是它是同步的。如果你的程序是线程安全的,ArrayLis...原创 2018-03-04 11:54:48 · 209 阅读 · 0 评论 -
ConcurrentHashMap的底层实现
并发基础概念内存模型Memory分为两类,main memory和working memory,main memory为所有线程共享,working memory中存放的是线程所需要的变量的拷贝(线程要对main memory中的内容进行操作的话,首先需要拷贝到自己的working memory,一般为了速度,working memory一般是在cpu的cache中的)。volatile的变量在被...原创 2018-03-04 11:55:08 · 501 阅读 · 0 评论 -
HashMap的底层实现
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable HashMap的底层(JDK1.7)transient Node<K,V>[] table; JDK1.8transient Entry<K,V&...原创 2018-03-04 11:55:27 · 209 阅读 · 0 评论 -
Set
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializablepublic class LinkedHashSet<E> extends HashSet<E> implements ...转载 2018-03-03 19:07:07 · 183 阅读 · 0 评论 -
LinkedList的底层实现
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializablepublic interface Deque<E> extends Queue&l...转载 2018-03-04 11:54:11 · 349 阅读 · 0 评论 -
JDK7的ConcurrentHashMap分析
JDK7下的ConcurrentHashMapcapacity:当前数组容量,始终保持 2^n。如果当前的 size 已经达到了阈值,并且要插入的数组位置上已经有元素,那么就会触发扩容,扩容后数组大小为当前的 2 倍。 由于是双倍扩容,迁移过程中,会将原来 table[i] 中的链表的所有节点,分拆到新的数组的 newTable[i] 和 newTable[i + oldLength...原创 2018-08-05 12:22:37 · 1317 阅读 · 0 评论 -
List 解析总结
ArrayList小结ArrayList允许元素为null值增加和删除的操作效率低,因为有扩容和数组复制的开销存在(如果是根据下标去删除元素的会比较快)查询和修改的效率较高,可以直接通过下标去访问元素,时间复杂度为O(1)多线程操作同一个ArrayList是不安全的PS:如果事先知道要存储的元素个数,那么最好使用带int参数的构造函数,因为这样能够减少数组扩容的开销大致结构...原创 2019-06-17 15:36:34 · 1222 阅读 · 0 评论