Vector
Vector类实现了一个动态数组,其主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
Vector继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。
Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。
Vector 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在Vector中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
Vector 实现了Cloneable接口,即实现clone()函数,它能被克隆。
和ArrayList不同,Vector中的操作是线程安全的。
Vector构造函数
Vector共有4个构造函数
Vector();// 默认构造函数,默认大小为10
Vector(int capacity);
// capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,
//每次容量会增加一倍。
Vector(int capacity, int capacityIncrement);
// capacity是Vector的默认容量大小,capacityIncrement是每次
//Vector容量增加时的增量值。
// 创建一个包含collection的Vector
Vector(Collection c);
Vector方法
添加元素类方法
Vector有5种添加元素的方法。
void add(int index, Object element);
//在此向量的指定位置插入指定的元素。
boolean add(Object o);
//将指定元素添加到此向量的末尾。
boolean addAll(Collection c);
//将指定 Collection 中的所有元素添加到此向量的末尾,按照指定collection 的迭代器所返回的顺序添加这些元素。
boolean addAll(int index, Collection c);
//在指定位置将指定 Collection 中的所有元素插入到此向量中。
void addElement(Object obj);
//将指定的组件添加到此向量的末尾,将其大小增加 1。
删除类方法
Object remove(int index) ;
//移除此向量中指定位置的元素,非同步
boolean remove(Object o);
//移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变,非同步
boolean removeAll(Collection c) ;
//从此向量中移除包含在指定 Collection 中的所有元素,同步
void removeAllElements() ;
//从此向量中移除全部组件,并将其大小设置为零,同步
boolean removeElement(Object obj) ;
//从此向量中移除变量的第一个(索引最小的)匹配项,同步
void removeElementAt(int index) ;
//删除指定索引处的组件,同步
//protected void removeRange(int fromIndex, int toIndex);
从此Vector中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素,同步
boolean retainAll(Collection c);
//在此向量中仅保留包含在指定 Collection 中的元素,同步
修改类方法
Object set(int index, Object element);
//用指定的元素替换此向量中指定位置处的元素。
void setElementAt(Object obj, int index);
//将此向量指定 index 处的组件设置为指定的对象。
void setSize(int newSize);
//设置此向量的大小。
查找类方法
int indexOf(Object elem);
//返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回-1。
int indexOf(Object elem, int index);
//返回此向量中第一次出现的指定元素的索引,从index处正向搜索,如果未找到该元素,则返回 -1。
int lastIndexOf(Object elem);
//返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1。
int lastIndexOf(Object elem, int index) ;
//返回此向量中最后一次出现的指定元素的索引,从index处逆向搜索,如果未找到该元素,则返回 -1。
boolean contains(Object elem);
//如果此向量包含指定的元素,则返回 true。
boolean containsAll(Collection c);
//如果此向量包含指定 Collection 中的所有元素,则返回 true。
Object firstElement();
//返回此向量的第一个组件(位于索引0处的项)。
Object lastElement();
//返回此向量的最后一个组件。
与数组之间的转换
void copyInto(Object[] anArray);
//将此向量的组件复制到指定的数组中。
Object[] toArray()
//返回一个数组,包含此向量中以恰当顺序存放的所有元素。
Object[] toArray(Object[] a)
//返回一个数组,包含此向量中以恰当顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。
其他常用方法
int capacity();
//返回此向量的当前容量。
void clear();
//从此向量中移除所有元素。
boolean equals(Object o);
//比较指定对象与此向量的相等性。
Object get(int index);
//返回向量中指定位置的元素。
int size();
//返回此向量中的组件数。
boolean isEmpty();
//测试此向量是否不包含组件。
String toString();
//返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。
其他方法
Object clone();
//返回向量的一个副本。
Object elementAt(int index)
返回指定索引处的组件。
Enumeration elements();
//返回此向量的组件的枚举。
void ensureCapacity(int minCapacity);
//增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。
int hashCode();
//返回此向量的哈希码值。
void insertElementAt(Object obj, int index);
//将指定对象作为此向量中的组件插入到指定的 index 处。
List subList(int fromIndex, int toIndex);
//返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。
void trimToSize();
//对此向量的容量进行微调,使其等于向量的当前大小。
Vector 特点
1.底层由一个可以增长的数组组成;
2.Vector 通过 capacity (容量) 和 capacityIncrement (增长数量) 来尽量少的占用空间;
3.扩容时默认扩大两倍;
4.最好在插入大量元素前增加 vector 容量,那样可以减少重新申请内存的次数;
5.通过 iterator 和 lastIterator 获得的迭代器是 fail-fast 的;
6.通过 elements 获得的老版迭代器 Enumeration 不是 fail-fast 的;
7.同步类,每个方法前都有同步锁 synchronized;
8.在 JDK 2.0 以后,经过优化,Vector 也加入了 Java 集合框架大家族。
参考:
1.http://www.runoob.com/java/java-vector-class.html
2.https://blog.csdn.net/u011240877/article/details/52900893
3.https://www.cnblogs.com/skywang12345/p/3308833.html