Vector类
Java的数组具有很强的功能,但它并不总是能满足我们的要求。数组一旦被创建,它的长度就固定了。但是,有时我们在创建数组时并不确切地知道有多少项需要加进去。解决这一问题的办法是,创建一个尽可能大的数组,以满足要求,但这势必会造成空间的浪费。Java提供了一个好的办法:
使用java.util包中的向量类Vector。
简单地说,Vector是一个动态数组,它可以根据需要动态伸缩。另外,Vector类还提供了一些有用的方法,如增加和删除元素的方法,而这些操作在数组中一般来说必须手工完成。
Vector类提供了三个属性,四个构造器和多种方法,下面分别做以介绍:
1.属性
protected int capacityIncrement--------当向量的大小超过容量时,向量容量的增长量。
protected int elementCount--------这个Vector对象中的组件数。
protectedObjected[ ] elementData--------存储向量的组件的数组缓冲区。
2.构造器
Vector( )--------构造一个空向量。
Vector(Collection c )--------构造一个包含给定集合中的元素的向量。
Vector(int initialCapacity )--------构造一个具有给定的初始容量的空向量。
Vector(int initialCapacity, int capacityIncrement )-------- 构造一个具有给定的初始容量
和容量增量的空向量。
3. 常用的方法
① 向向量中添加对象
向一个向量中添加新对象有两种情况,可以用Vector提供的两种不同方法来实现:
void addElement(Object obj)-------- 在向量的最后增加一个元素。
void insetElementAt(Object obj,int index)-------- 在向量的指定位置插入一个元素。
② 从向量中删除对象
从向量中删除对象有三种情况,可以用Vector提供的三种不同方法来实现:
void removeAllElement( )--------删除向量中的所有对象。
void removeElement(Object ob)--------删除向量中一个指定的对象(仅删除第一次出现的对象)
。
void removeElementAt( int index)--------删除向量中一个指定位置上的对象。
③ 搜索向量中的对象
有时我们需要得到向量中特殊位置上的对象或判断向量中是否包含某个对象,可以使用如下的方法:
Object firstElement( )--------返回这个向量的第一个对象。
Object lastElement( )--------返回这个向量的最后一个对象。
Object ElementAt(int index )--------返回这个向量中指定位置的对象。
Boolean contains(Object elem)--------如果这个对象在这个对象中,则返回true。
④获取向量的基本信息
int capacity( )--------返回这个向量的当前容量。
int size( )-------- 返回这个向量的对象个数。
【例7.12】使用Vector类的示例。
import java.util.*
class VectorTest{
public static void main(Sring[] args){
Vector vec=new Vector(3);
System.out.println(" old capacity is"+vec.capacity());
vec.addElement(new Integer(1));
vec.addElement(new Integer(2));
vec.addElement(new Integer(3));
vec.addElement(new Float(2.78));
vec.addElement(new Double(2.78));
System.out.println(" new capacity is"+vec.capacity());
System.out.println(" new size is"+vec.size());
System.out.println(" first item is"+(Integer)vec.firstElement());
System.out.println(" last item is"+(Float)vec.lasttElement());
if(vec. Contains(new Integer(2)))
System.out.println(" found 2");
vec. removeElementAt(1);
if(vec.Contains(new Integer(2))){
System.out.println(" found 2");
else
System.out.println(" after deleting not found 2");
}
}
运行结果:
C:\>java VectorTest
old capacity is3
new capacity is6
new size is5
first item is1
last item is2.78
found 2
after deleting not found 2