首页 > 代码库 > Vector的使用

Vector的使用



Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。


关于ArrayList和Vector区别如下:

  1. ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍。
  2. Vector提供indexOf(obj, start)接口,ArrayList没有。
  3. Vector属于线程安全级别的,但是大多数情况下不使用Vector,因为线程安全需要更大的系统开销。

package VectorTest;

import java.util.Vector;
import java.util.Enumeration;
public class VectorTest{
  public static void main(String[] args){
    Vector v1=new Vector();
    Integer integer1=new Integer(1);
    
    v1.addElement("one");//加入的为字符串对象
    v1.addElement(integer1);
    v1.addElement(integer1);//加入的为Integer的对象
    
    v1.addElement("two");
    v1.addElement(new Integer(2));
    v1.addElement(integer1);
    v1.addElement(integer1);
    System.out.println("The vector v1 is:\n\t"+v1);//将v1转换成字符串并打印
    
    v1.insertElementAt("three",2);//往指定位置插入新的对象,指定位置后的对象依次往后顺延
    v1.insertElementAt(new Float(3.9),3);
    System.out.println("The vector v1(used method insertElementAt())is:\n\t "+v1);
    
    v1.setElementAt("four",2);//将指定位置的对象设置为新的对象
    System.out.println("The vector v1(used method setElementAt())is:\n\t "+v1);
    
    v1.removeElement(integer1);//从向量对象v1中删除对象integer1,由于存在多个integer1所以从头开始找,删除找到的第一个integer
    
    Enumeration enum1=v1.elements();//使用枚举类(Enumeration)的方法来获取向量对象的每个元素
    System.out.print("The vector v1(used method removeElement())is:");
    while(enum1.hasMoreElements())
      System.out.print(enum1.nextElement()+" ");
      System.out.println();

    //按不同的方向查找对象integer1所处的位置
    System.out.println("The position of object 1(top-to-bottom):"+ v1.indexOf(integer1));
    System.out.println("The position of object 1(tottom-to-top):"+v1.lastIndexOf(integer1));

    //重新设置v1的大小,多余的元素被行弃
    v1.setSize(4);
    System.out.println("The new vector(resized the vector)is:"+v1);
  }
}