温州做网站 掌熊号,图片制作软件带字,管理咨询公司有哪些方面,扫wordpress漏洞工具vector的介绍#xff1a;
1.Vector实现了List接口的集合。
2.Vector的底层也是一个数组,protected Object[] elementData;
3.Vector 是线程同步的#xff0c;即线程安全#xff0c;Vector类的操作方法带有Synchronized.
4.在开发中#xff0c;需要线程同步时#xff0… vector的介绍
1.Vector实现了List接口的集合。
2.Vector的底层也是一个数组,protected Object[] elementData;
3.Vector 是线程同步的即线程安全Vector类的操作方法带有Synchronized.
4.在开发中需要线程同步时考虑Vector.
Vector扩容机制
如果是无参默认空间为10满后按2倍扩容。
如果指定大小则直接按2倍扩。
接下来是源码剖析 Vector vectornew Vector();创建了一个Vector对象Debug进入
public Vector() {this(10);}
进入this方法 public Vector(int initialCapacity) {this(initialCapacity, 0);}
initialCapacity为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;initialCapacity为10if判断为false数组elementData为10 创建对象已完 for (int i 0; i 15; i) {vector.add(i);}
看看扩容1-15的底层运行
会先进行一个自动装箱这里不演示了 public synchronized boolean add(E e) {modCount;add(e, elementData, elementCount);return true;}
e 是传入的数elementData是数组elementCount是元素个数进入add方法 private void add(E e, Object[] elementData, int s) {if (s elementData.length)elementData grow();elementData[s] e;elementCount s 1;}
如果元素个数等于elementData数组则说明数组需要扩容grow方法扩容后添加元素
不等于的话则进入数组 private Object[] grow() {return grow(elementCount 1);}进入grow方法 private Object[] grow(int minCapacity) {int oldCapacity elementData.length;int newCapacity ArraysSupport.newLength(oldCapacity,minCapacity - oldCapacity, /* minimum growth */capacityIncrement 0 ? capacityIncrement : oldCapacity/* preferred growth */);return elementData Arrays.copyOf(elementData, newCapacity);}newCapacity为20赋给elementData