public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { //外部操作数 protected transient int modCount = 0;//3 }
public class Vector<E> extends AbstractList<E> implements List<E>{ //最大容量 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; //数据容器 - ["麻生希","椎名空","水菜丽",null,null,null,null,null,null,null] protected Object[] elementData;// new Object[10]; //元素个数(相当于ArrayList里的size) protected int elementCount;//3 //容量增量 protected int capacityIncrement;//0 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; } //e - 水菜丽 public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1);//判断是否扩容 elementData[elementCount++] = e; return true; } //minCapacity - 3 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; //扩容机制 //newCapacity - 20 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); } }
//Vector<String> v = new Vector<>(); Vector<String> v = new Vector<>(10, 5); //添加数据 v.add("麻生希"); v.add("椎名空"); v.add("水菜丽");
Vector底层数据结构是什么?
Object类型的一维数组
Vector默认容量是多少?
10
Vector的特点是什么?
线程安全
Vector的扩容机制是什么 ?
容量增量小于等于0,扩容机制就是原数组长度的2倍
容量增量大于0,扩容机制就是原数组长度+容量增量