vector是一种单口的容器,vector所指的内容是一片连续的空间,支持随机访问(Random Access),此外,vector容器的空间是动态增长的。
1.动态数组 元素下表从0开始
2.同步访问
tip:
所谓动态增加大小,并不是在原空间之后续接新空间(因为无法保证原空间之后尚有可配置的空间),而是一块更大的内存空间,然后将原数据拷贝新空间,并释放原空间。因此,对vector的任何操作,一旦引起空间的重新配置,指向原vector的所有迭代器就都失效了。这是程序员容易犯的一个错误,务必小心。
2.矢量队列,它是JDK1.0版本添加的类
3.Vector中的操作是线程安全的
4.继承 AbstractList
5.实现了 List 它是一个队列,支持相关的添加、删除、修改、遍历等功能.
6.实现了RandmoAccess接口 快速随机访问。
7.实现了Cloneable接口 实现clone()函数。它能被克隆。
Vector的构造函数
Vector共有4个构造函数
// 默认构造函数
Vector();//容量默认大小是10
// capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。
Vector(int capacity)
// capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。
Vector(int capacity, int capacityIncrement)
// 创建一个包含collection的Vector
Vector(Collection<? extends E> collection)
Vector的API
synchronized boolean add(E object)//插入元素到vector末尾
void add(int location, E object)//在location位置插入元素object
synchronized boolean addAll(Collection<? extends E> collection)//将指定 Collection 中的所有元素添加到此向量的末尾
synchronized boolean addAll(int location, Collection<? extends E> collection)//在指定位置将指定 Collection 中的所有元素插入到此向量中。
synchronized void addElement(E object)//将指定的组件添加到此向量的末尾,将其大小增加 1。
synchronized int capacity()//返回vector的容量 默认是10
void clear()//清空clear
synchronized Object clone()//返回vector的一个副本
boolean contains(Object object)//vector是否包含元素object
synchronized boolean containsAll(Collection<?> collection)//Boolean vector中是否包含collection中所有元素
synchronized void copyInto(Object[]elements)
synchronized E elementAt(int location)//获取在第location位置的元素
Enumeration<E> elements()
synchronized void ensureCapacity(int minimumCapacity)
synchronized boolean equals(Object object)
synchronized E firstElement()//获取第一个元素
E get(int location)
synchronized int hashCode()//返回vectror的哈希码
synchronized int indexOf(Object object, int location)//返回oject在vector中第一次出现的位置
int indexOf(Object object)//返回object所在位置
synchronized void insertElementAt(E object, int location)
synchronized boolean isEmpty()//判断容器是否为空
synchronized E lastElement()//获取vector中最后一个元素
synchronized int lastIndexOf(Object object, int location)
synchronized int lastIndexOf(Object object)//倒序查找
synchronized E remove(int location)//移除指定位置元素
boolean remove(Object object)//移除指定元素
synchronized boolean removeAll(Collection<?> collection)
synchronized void removeAllElements()
synchronized boolean removeElement(Object object)
synchronized void removeElementAt(int location)
synchronized boolean retainAll(Collection<?> collection)
synchronized E set(int location, E object)//设置location位置的元素为object
synchronized void setElementAt(E object, int location)
synchronized void setSize(int length)//重新定义vector长度 超出长度的元素会被删除
synchronized int size()//返回容器中元素的个数
synchronized List<E> subList(int start, int end)//返回vector中从start+1到end位置的元素
synchronized <T> T[] toArray(T[] contents)
synchronized Object[] toArray()//转为数组
synchronized String toString()//转为字符串
synchronized void trimToSize()//调整容量=vector大小
Vector的继承关系
java.lang.Object
↳ java.util.AbstractCollection
↳ java.util.AbstractList
↳ java.util.Vector
public class Vector
extends AbstractList
implements List, RandomAccess, Cloneable, java.io.Serializable {}
package test;
import java.util.Enumeration;
import java.util.Vector;
public class One {
public static void main(String args[]){
Vector vec = new Vector();
vec.add("one");
vec.add("two");
vec.add("three");
vec.add("four");
vec.add("five");
//设置第一个元素"hello"
vec.set(0, "hello");
//第三个位置插入元素“panda”
vec.add(2,"panda");
System.out.println("vec:"+vec);
//顺序查找
System.out.println("获取hello的索引"+vec.indexOf("hello"));
//倒序查找
System.out.println("获取hello的索引"+vec.lastIndexOf("panda"));
System.out.println("获取第一个元素"+vec.firstElement());
System.out.println("获取第3个元素"+vec.elementAt(2));
System.out.println("获取最后一个元素"+vec.lastElement());
System.out.println("获取vector的大小"+vec.size());
System.out.println("获取vector的总容量"+vec.capacity());//vector默认大小10
System.out.println("获取vector第2到第4个元素"+vec.subList(1, 4));
//通过Enumeration 遍历vector
Enumeration enu = vec.elements();
while(enu.hasMoreElements()){
System.out.println("nextElement: "+enu.nextElement());
}
Vector vec2 = new Vector();
vec2.add("kaka");
vec2.add("haha");
System.out.println(vec.retainAll(vec2));
//获取vec对应的数组
String[] vecString = (String[])vec.toArray(new String[0]);
for(String str:vecString){
System.out.println(str);
}
//清空vector
vec.clear();
System.out.println("判断vec是否为空"+vec.isEmpty());
}
}