java底层源码解析
橘天霸
这个作者很懒,什么都没留下…
展开
-
CopyOnWriteArrayList源码解析
CopyOnWriteArrayList是一个线程安全的ArrayList,它的底层是通过ReentrantLock()实现的。 //空参构造器创建了一个空数组 public CopyOnWriteArrayList() { setArray(new Object[0]); } final void setArray(Object[] a) { array = a; } // array 被volatile修饰,内存中修改可见 private transient volatile Ob原创 2021-04-15 15:59:55 · 69 阅读 · 0 评论 -
Vector源码解析
Vector底层也是数组,初始容量是10。它是线程安全的,效率低。 public Vector() { this(10);// Vector的初始容量为10 } public Vector(int initialCapacity) { this(initialCapacity, 0); } public Vector(int initialCapacity, int capacityIncrement) { super(); if (initialCapacity <原创 2021-04-15 15:58:04 · 74 阅读 · 0 评论 -
LinkedList源码解析
LinkedList实现了List和Deque接口。LinkedList是用双向链表存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢,它还提供了List接口中没有定义的方法,专门用于操作表头和和表尾元素,可以当做堆、栈、队列和双向列表使用。 //Node是一个静态内部类 private static class Node<E> { E item;//存储当前元素 Node<E> next;//存储下一个节点 Node<E> pr原创 2021-04-15 15:54:58 · 57 阅读 · 0 评论 -
ArrayList源码解析
ArrayList是List集合的一个实现类,它可以快速查询元素。ArrayList的查找时通过索引下标进行查找,所以ArrayList的查找快,当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。ArrayList线程不安全。 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; //当构建一个无参构造器原创 2021-04-15 15:52:20 · 54 阅读 · 0 评论