Hierarchy以下:数组
该类的主要方法以下图所示:安全
三个protect字段函数
capacityIncrement:每次数组扩充的个数,若是为0,新容量是原来的2倍, 若是不为0,新容量为原来的容量加上此长度,代码体如今:spa
elementCount : 数组中元素的个数。
elementData:为该Vector的实现数组。线程
含有两个参数的构造函数:对象
initialCapacity表明该数组的初始化长度,capacityIncrement表明该数组满后的扩张因子。索引
含有一个参数的构造函数:
此时capacityIncrement为0ci
不含参数的构造函数:
此时的initialCapacity为10 capacityIncrement为0element
构造参数类型为Collection的构造函数
rem
add(E e):向该Vector中添加一元素
此方法是线程安全的,在给数组新的index赋值前会调用ensureCapacityHelper方法,保证改数组的容量在占满时扩充为新的数组。
扩充为新数组的调用的是
此方法为native方法,依赖于具体的JVM实现。
add(int index, E element):在指定的位置插入元素
此时 该index位置的元素向后移动,而后把obj插入index,这样便影响了效率,该方法一样要检查内部数组是否须要扩张。
addAll(int index, Collection<? extends E> c):
将原来index处元素向右移动c.toArray().length个长度,而后将c中的元素复制到elementData数组中。
addAll(Collection<? extends E> c):
将c中的元素依次复制到elementData数组中(线程安全)
addElement(E obj):
添加一个元素。
capacity():
返回该内部数组的长度。
clear():
清空该Vector。
clone():
经过该Vector克隆一个新的Vector,该克隆为浅拷贝。
contains(Object o):
判断该Vector是否含有某对象o
containsAll(Collection<?> c):
调用父类AbstractCollection<E>的containsAll(Collection<?> c)的方法。
copyInto(Object[] anArray):
将该Vector中的元素拷贝至anArray中。
elementAt(int index):
获取索引为index位置的元素。
elements():
返回该Vector的枚举表示。
firstElement():
返回该集合的第一个元素。
get(int index):
根据索引找到指定的元素。
insertElementAt(E obj, int index):
在指定的位置插入某元素。
isEmpty():
判断该集合是否为空。
lastElement():
该集合的最后一个元素。
lastIndexOf(Object o, int index):
从该集合的index位置向前查找第一次出现该o的索引。
remove(int index):
删除该index处的元素,同时后面的元素向前移动,这样会消耗必定的时间。
remove(Object o):
从该集合中删除特定的o,可是只会删除第一次出现的这个o,同时后面的依次向左移动。
removeAll(Collection<?> c):
从该集合中删除c中含有的元素。
removeRange(int fromIndex, int toIndex):
移除fromIndex到toIndex之间的元素,同时后面的元素左移,空的set为null以便GC回收。
retainAll(Collection<?> c):
删除该集合中含有c集合中的元素。
set(int index, E element):
将指定的index位置设置为element,不涉及到先后元素的移动。
setSize(int newSize):
改变该集合的容量。
size():
返回该集合的大小。
subList(int fromIndex, int toIndex):
返回该集合的子集合。
toArray() :
返回该集合的Object数组表示。
toArray(T[] a):
返回该集合的特定的数组表示。
trimToSize():
缩小容量,刚好撑得下该集合中的元素。
总结:
该集合中的全部方法都是线程安全的,保证了状态一致性可是牺牲了运行效率。
根据索引获取元素很快,按索引删除元素要涉及到后续元素的向前移动,根据对象删除的话还须要先查到该
元素在集合中的索引,查找某一元素速度相对快些。插入快,删除相对慢,查找相对快。