![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK源码
·不过如此
这个作者很懒,什么都没留下…
展开
-
JDK源码之HashMap
部分重要属性 //存放key,value的数组 transient Node<K,V>[] table; //存放Entry的set transient Set<Map.Entry<K,V>> entrySet; //hashMap的大小 默认16 transient int size; //修改次数 ...原创 2019-09-03 16:39:29 · 75 阅读 · 0 评论 -
JDK1.8源码之ConcurrentHashMap(一)
部分重要属性 //存放key,value数据 transient volatile Node<K,V>[] table; //为了扩容操作时,不影响读操作而设立,因此不保证读写实时一致性 private transient volatile Node<K,V>[] nextTable; //基础计数,使用CAS操作更新 private tran...原创 2019-09-13 13:24:08 · 81 阅读 · 0 评论 -
JDK1.8源码之ConcurrentHashMap(二)
put方法 final V putVal(K key, V value, boolean onlyIfAbsent) { //key和value不能为空 if (key == null || value == null) throw new NullPointerException(); int hash = spread(key.hashCo...原创 2019-09-13 13:55:11 · 80 阅读 · 0 评论 -
JDK1.8源码之ConcurrentHashMap(三)table初始化及扩容机制
table初始化方法initTable() private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((tab = table) == null || tab.length == 0) { if ((sc = sizeCtl)...原创 2019-09-21 15:05:06 · 320 阅读 · 0 评论 -
JDK1.8源码之ArrayList
部分重要属性 //存放元素的数组 transient Object[] elementData; //大小,非elementData的length,存入元素的总个数 private int size; add方法 public boolean add(E e) { //保证数组不溢出,否则进行扩容操作 ensureCapacityIn...原创 2019-09-22 19:44:27 · 124 阅读 · 0 评论 -
JDK1.8源码之LinkedList
LinkedList采用双链表的数据结构,可以用作列表做存储,也可以用做双端队列。 部分属性与Node结构 //指向列表的第一个元素 transient Node<E> first; //指向列表的最后一个元素 transient Node<E> last; //Node节点 private static class Node<E>...原创 2019-09-23 20:10:34 · 146 阅读 · 0 评论