- 博客分类:
- Java SE
2.Vector是一个object数组,Vector的add是线程安全的。
3.Vector的方法 ensureCapacityHelper
- private void ensureCapacityHelper(int minCapacity) {
- int oldCapacity = elementData.length;
- if (minCapacity > oldCapacity) {
- Object[] oldData = elementData;
- int newCapacity = (capacityIncrement > 0) ?
- (oldCapacity + capacityIncrement) : (oldCapacity * 2);
- if (newCapacity < minCapacity) {
- newCapacity = minCapacity;
- }
- elementData = Arrays.copyOf(elementData, newCapacity);
- }
- }
该方法在插入元素时候,判断数组长度 ,如果长度不够,进行扩容,扩容的方式:根据capacityIncrement 的值来判断(capacityIncrement 的值默认为 0, 可以通过vector的构造方法传递:“public Vector(int initialCapacity, int capacityIncrement)”),
如果capacityIncrement 的值大于0,则在原来长度的基础上加上增长基数capacityIncrement ,否则 按原来长度2倍进行扩容。
4.Vector 的 insertElementAt 方法
- public synchronized void insertElementAt(E obj, int index) {
- modCount++;
- if (index > elementCount) {
- throw new ArrayIndexOutOfBoundsException(index
- + " > " + elementCount);
- }
- ensureCapacityHelper(elementCount + 1);
- System.arraycopy(elementData, index, elementData, index + 1, elementCount - index);
- elementData[index] = obj;
- elementCount++;
- }
该方法使用system.arraycopy[从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束],把需要插入元素的位置上的已存在元素往后移动一位,移位后,把需要插入的元素指定到index位置