java 集合之Vector类

上节我们了解了java集合框架设计的由来,今天我们来看看jdk2之前的Vector类,通过API我们知道,Vector类可以实现对象数组的增长,从jdk1.2后Vector成为了java Collection Framework的成员,但是了与新的集合不一样,Vector是线程安全的,相反新的集合是线程不安全,我们来看底层的代码:


QQ截图20180508232745.png

通过源代码我们可以看到,Vector类实现了List集合接口。

QQ截图20180508232843.png

上图是它的一个字段,底层还是一个数组。

QQ截图20180508232912.png

这是Vector类的一个无参构造器,我们从代码中看到,当我们首次创建一个Vector类时,默认的初始容量为10。

QQ截图20180508233050.png

上图是Vector类的有参构造器,我们可以通过自己的需求来定义这个容器的大小,且增量是0.

QQ截图20180508233037.png

上图也是Vector类的一个有参构造器,从代码的来看,如果我们给的初始容量小于0,抛出不合法的参数异常,反之,将我们传入的容量给了数组,上面这些是为了初始化Vector类,接下来我们来看看它的常用方法:

Vector常用方法

对于一个容器来讲,我们用来操作它,无非就是往他里面添加对象,删除操作、修改操作和查询操作,从API中我们可以看到它的方法好多,这里我就列举我们常用的即可:

增加方法:
  > boolean  add(Object  obj);将指定元素添加到该容器的末端。
    void  addAll(int index,Object obj);将元素添加到指定的位置。
    boolean addAll(Colletion c);将指定集合中的所有元素添加到此容器的末端。
代码示例:
 private static void testAdd(){
     Vector vector = new Vector();
     //向该集合中添加元素
     vector.add("A");
     vector.add("B");
     vector.add("C");
     System.out.println(vector);
     //向指定的位置添加元素
    /* vector.add(1,"D");*/
     System.out.println(vector);
     创建了一个集合
     Vector vector1 = new Vector<>();
     vector1.add(1);
     vector1.add(2);
     vector1.add(3);
     System.out.println(vector1);
     将集合vector1中的元素添加到集合vector指定的位置
     vector.addAll(1,vector1);
     System.out.println(vector);
    将集合vector1作为一个整体元素添加到集合vector的末端
     vector.add(vector1);
     System.out.println(vector);
 }

结果如下:
QQ截图20180509095330.png

上面展示了Vector的增加方法之后,我们来看看它的删除方法:

删除方法:
  > Object  remove(int  index);删除指定索引的元素,并返回。
    boolean  remove(Object obj);删除指定元素。
    boolean remove (Collection c);从该集合中删除集合c的元素。
代码示例:
 /**
 * Remove方法
 */
private static void testRemove(){
     Vector vector = new Vector();
     //向该集合中添加元素
     vector.add("A");
     vector.add("B");
     vector.add("C");
     System.out.println(vector);
    /* //删除指定索引位置上的元素
     vector.remove(1);
     System.out.println(vector);*/
    //删除指定元素
    /* vector.remove("B");
    System.out.println(vector);*/

    Vector vector1 = new Vector<>();
    vector1.add(1);
    vector1.add(2);
    vector1.add(3);
    System.out.println(vector1);
   /* vector.add(vector1);*/

    vector.addAll(vector1);
    System.out.println(vector);
    //将集合vector1重元素从集合vector中删除
    vector.removeAll(vector1);
    System.out.println(vector);

 }

结果如下:
QQ截图20180509101220.png

上图是Vector类的删除操作,接下来我们来看看修改操作:

修改方法:
  >  Object  Set(int  index, Object obj);将指定索引位置上的元素替换成obj,并将要修改的元素返回。
代码示例:
''''''
 /**
 * Set方法
 */
private static void testSet(){

   Vector vector = new Vector();
    向该集合中添加元素
    vector.add("A");
    vector.add("B");
    vector.add("C");
    System.out.println(vector);
    将指定索引位置上的元素进行修改,并返回要修改的元素
    Object o = vector.set(1, "hello");
    System.out.println(o);

}
打印结果如下:
QQ截图20180509105025.png

修改的方法我们经常用它,如上图所示,接下来我们看查询的方法:

查询方法:
 > Object get (int  index);查询指定索引位置上的元素,并此元素返回。
    int Size();返回当前容器的元素个数。
    boolean  isEmpty();判断当前集合是否为空。
    Object [] toArray();将集合对象转为Object的数组。
代码示例:
  private static void testGet(){

    Vector vector = new Vector();
    //向该集合中添加元素
    vector.add("A");
    vector.add("B");
    vector.add("C");
    System.out.println(vector);
    Object o = vector.get(1);
    System.out.println(o);
    //返回集合vector中元素的个数
    int i = vector.size();

    System.out.println(i);
    //判断当前集合是否为空
    boolean b = vector.isEmpty();
    System.out.println(b);
    //将集合对象转为Object的数组
    Object[] array = vector.toArray();
    System.out.println(Arrays.toString(array));

}
打印结果如下 :
QQ截图20180509110329.png

综合所上,关于Vector的常用方法基本了解完了,还有一点就是关于Vector的性能问题,我们之前提过一点,Vector是同步的,所以说它的性能是很低的,其次我们知道Vector的底层是Object数组,故性能不高,我们来看看它的源代码就知道了,这里就只看一个Add的方法:

QQ截图20180509111256.png

上图是Vector的add方法,我们可以看到该方法用了synchronized来修饰,表示线程安全,所以性能比较低,自从集合框架出来之后,如我们的List集合、Set集合等,性能都高于Vector,这也是Vector基本不再用的原因,至于List和Set集合等我们说到了再看,关于Vector的了解就到这里了。

你可能感兴趣的:(java 集合之Vector类)