Vector探秘

集合类List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象:
   vector:内部是数组数据结构,是同步的。增删查询都很慢。
   arrarylist :内部是数组数据结构,是不同步的,代替了vector,查询的速度很快
   linkedlist:内部是链表数据结构,是不同步的。增删元素的速度很快。

Vector 类是可实现自动增长的对象数组。  java.util.vector提供了向量类(vector)以实现类似动态数组的功能。
在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。  创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。

同步是线程中的概念 ,synchronized是Java中的关键字,是一种同步锁。synchronized只锁定对象,每个对象只有一个锁(lock)与之相关联,它修饰的对象有以下几种:

1.修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;
2.修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
3.修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
4.修饰一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象;

注意:
1.虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以。当然,还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。
2.静态方法是属于类的而不属于对象的。同样的,synchronized修饰的静态方法锁定的是这个类的所有对象。

Vector<E> v=new Vector<E>();定义一个Vector类对象

// 默认构造函数
Vector()

// capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。
Vector(int capacity)

// capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。
Vector(int capacity, int capacityIncrement)

//创建一个包含collection的Vector
Vector(Collection<? extends E> collection)

//将指定元素追加到此向量的末尾。 
boolean add(E o) 

//在此向量的指定位置插入指定的元素。 
void add(int index, E element) 

//将指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。 
boolean addAll(Collection<? extends E> c) 

//在指定位置将指定 Collection 中的所有元素插入到此向量中。 
boolean addAll(int index, Collection<? extends E> c) 

//将指定的组件添加到此向量的末尾,将其大小增加 1。 
void addElement(E obj) 

//返回此向量的当前容量。 
int capacity() 

//从此向量中移除所有元素。
void clear() 
 
//返回向量的一个副本。 
Object clone() 

//测试指定的对象是否为此向量中的组件。 
boolean contains(Object elem) 

//如果此向量包含指定 Collection 中的所有元素,则返回 true。 
boolean containsAll(Collection<?> c) 

//将此向量的组件复制到指定的数组中。
void copyInto(Object[] anArray) 

//返回指定索引处的组件。 
E elementAt(int index) 

//返回此向量的组件的枚举。
Enumeration elements() 
 
//比较指定对象与此向量的相等性。 
boolean equals(Object o) 

//返回此向量的第一个组件(位于索引 0 处的项)。 
E firstElement() 

//返回向量中指定位置的元素。 
E get(int index) 

//搜索给定参数的第一个匹配项,使用 equals 方法测试相等性。
int indexOf(Object elem) 

//搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性。
int indexOf(Object elem, int index) 

//将指定对象作为此向量中的组件插入到指定的 index 处。 
void insertElementAt(E obj, int index) 

//测试此向量是否不包含组件。
boolean isEmpty()

//返回此向量的最后一个组件。
E lastElement() 
 
//返回指定的对象在此向量中最后一个匹配项的索引。
int lastIndexOf(Object elem) 

//向后搜索指定的对象,从指定的索引处开始搜索,并返回一个索引。 
int lastIndexOf(Object elem, int index) 

//移除此向量中指定位置的元素。 
E remove(int index) 

//移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。
boolean remove(Object o) 

//从此向量中移除包含在指定 Collection 中的所有元素。 
boolean removeAll(Collection<?> c) 

//从此向量中移除全部组件,并将其大小设置为零。
void removeAllElements() 

//从此向量中移除变量的第一个(索引最小的)匹配项。 
boolean removeElement(Object obj) 

//删除指定索引处的组件。 
void removeElementAt(int index) 

//从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。
protected void removeRange(int fromIndex, int toIndex) 

//用指定的元素替换此向量中指定位置处的元素。  
E set(int index, E element) 

//将此向量指定 index 处的组件设置为指定的对象。 
void setElementAt(E obj, int index) 

//设置此向量的大小。 
void setSize(int newSize) 

//返回此向量中的组件数。 
int size() 

//返回一个数组,包含此向量中以正确顺序存放的所有元素。 
Object[] toArray() 

 T[] 
toArray(T[] a) 
//返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。 
String toString() 
//返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。 

猜你喜欢

转载自blog.csdn.net/lcking18325/article/details/69721416