Java中Vector向量的用法
Java中的向量实际就是一个动态的可自动扩容的数组
1、向量中的元素必须是引用型的变量,而且可以进行增删改等多种操作
2、同样有向量的容量和向量的长度两个属性,当新的长度超过容量时,程序会自动扩容
此外,还有一个属性是 容量的增量 , 容量的增量的设定控制着扩容的规则,当需要进行
扩容时,则从下面两个数值中选取教的一个进行扩容:
① 第一个数是向量对象的新的长度
② 第二个数根据增量来确定:
<1>如果增量为 0 , 则第二个数为旧的容量的2倍
<2>如果增量不为0 ,则第二个数为旧容量与增量之和
3、向量引用型变量的声明
Vector<向量元素的数据类型>变量名
如: Vector<String> vs
4、向量实例对象的创建方法——通过构造方法
① public Vector() 默认容量为10,增量为0
② public Vector(int initialCapacity) 容量为initialCapacity,增量为0
③ public Vector(int initialCapacity , int capacityIncrement)
注意在创建对象调用构造方法的形式如下:
Vector<String> vs = new Vector<String>() ;
5、对向量实例对象的操作方法(E代表元素的数据类型)
<1> 增加与插入
① public boolean add(E obj)
public void addElementA(E obj)
都是在向量的尾部增加元素
② public void add(int index , E obj)
public void insertElementAt(E obj , int index)
都是在指定的位置插入新的元素
<2> 修改于删除
① public E set(int index , E element)
public void setElementAt(E obj, int index)
都是指定位置的元素的修改,其中第一个方法返回旧的被修改元素的引用
② public void clear()
public void removeAllElements()
删除向量中的所有的元素
③ public E remove(int index)
public void removeElementAt(int index)
删除指定位置的元素
④ public boolean remove(Object obj)
public boolean removeElement(Object obj)
值得注意的是:这两个方法都必须要判定指定的obj对象是否在当前的向量中,而如
何判定两个对象是否“相等”呢?这两个方法都会自动调用向量元素继承自Object类
的public boolean equals(Object obj)方法,来判定是否有要删除指定的对象,这
就出现了一个问题:
在Object类中的equals(Object obj)方法,只有当两个引用型变量同时指向同一
个对象时,才会返回true,但实际remove()方法往往要求当两个引用型变量指向的
对象具有相同的内容时,就要进行删除操作,所以一般要在向量的元素的类中对继承
的equals进行重写,至于equals方法的重写,在之前已经说过了
<3>信息的查询操作
① public boolean contains(Object obj)
判定obj是否在当前的向量对象中,同样需要调用equals()方法
② public int indexOf(Object obj)
返回第一个与obj相等的向量中的元素的索引
public int lastIndexOf(Object obj)
返回最后一个与obj相等的向量中的元素的索引
③ public E elementAt(int index)
public E get(int index)
都会返回下标为index的向量中的元素
④ public E firstElement() 返回下标为0 的元素
public E lastElement() 返回最后一个元素
⑤ public int capacity() 返回向量的当前的容量
public int size() 返回向量的当前的长度
public boolean isEmpty() 判定当前的向量对象是否为空
⑥ public void setSize(int newSize)
设定向量的长度,要么删除一部分元素,要么用null补充,如果需要扩大容量的
话,会自动扩容
⑦ public void ensureCapacity(int minimum)
设定向量的容量,扩容规则与上述规定相同
⑧ public void trimToSize()
使向量的容量正好等于向量的常度
6、获取向量中的各个元素还可以通过迭代器(iterator)来实现
类java.util.Vector有一个成员方法
public Iterator<E> iterator()
该方法会返回当前的向量对象所对应的迭代器,返回类型为Iterator<E>类型,
Iterator类位于java.util.Iterator,所以要用迭代器的话就必须引入该类
在获得了向量所对应的迭代器后,就可以通过这个迭代器来对各个元素进行操作了
java.util.Iterator类有两个重要的成员方法:
① public boolean hasNext() 判定迭代器中是否还有元素
② public E next() 返回迭代器当前位置的下一位置的元素,之后当前位置
向下移动一个位置
③ public void remove()
从迭代器指向的容器当中删除迭代器返回的最后一个元素,所以在调用该方法前,至少调用了
一次next()方法,也就是说remove()方法不能够连续调用
【在迭代器被创建完成之后,其当前位置就自动的指向序列的第一个元素的前一个位置
hasNext()用来判定当前位置的下一个位置是否还有元素
在多次调用next()方法后,当前位置的下一个位置就会不在有元素了,
而且当前位置是不能回到最初位置的,这时再调用next()方法就会报错
所以说一般迭代器只能从头到尾用一次】 如:
String str1 = "123" ;
String str2 = "456" ;
Vector<String> vs = new Vector<String>(2) ;
vs.add(str1) ;
vs.add(str2) ;
Iterator<String> it = vs.iterator() ;
while(it.hasNext())
System.out.println(it.next());
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号