public abstract class AbstractListextends AbstractCollection { //操作数 protected transient int modCount = 0; } public class Vector extends AbstractList implements List { //数组容器 protected Object[] elementData;//new Object[10] //元素个数(相当于ArrayList的size) protected int elementCount; //容量增量 protected int capacityIncrement;//0 //数组最大容量 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; public Vector() { this(10); } // initialCapacity - 10 public Vector(int initialCapacity) { this(initialCapacity, 0); } //initialCapacity - 10 //capacityIncrement - 0 public Vector(int initialCapacity, int capacityIncrement) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; this.capacityIncrement = capacityIncrement; } public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return true; } private void ensureCapacityHelper(int minCapacity) { if (minCapacity - elementData.length > 0) grow(minCapacity); } // minCapacity - 11 private void grow(int minCapacity) { // oldCapacity - 10 int oldCapacity = elementData.length; int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); elementData = Arrays.copyOf(elementData, newCapacity); } }
1.Vector的底层数据结构?
一维数组
2.默认初始化容量?
10
3.数组最大容量?
Integer.MAX_VALUE-8
4.Vector的扩容机制?
判断 容量增量是否大于0,大于0,数组长度+容量增量
判断 容量增量是否大于0,小于等于0,数组长度*2
5.Vector的特点?
线程安全的



