Vector

Java 专栏收录该内容
21 篇文章 0 订阅

Vector

        Vector非常类似ArrayList,都继承自AbstractList并且都实现了List接口,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

        Vector实现List接口,所以里面的元素是有序的。

 向Vector中加入的元素add()方法是有序的,后加入的排列在最后。

我们也可以调用add(int index,E element)方法向指定位置加入元素。

vector.elements()方法返回一个枚举类型,我们可以用来遍历整个vector。

vector.iterator()方法返回一个迭代器,同样可以用来遍历整个vector

vector.contains(E element)方法,如果vector中存在指定元素则返回true,否则false。

vector.get(int index)方法,返回指定位置的元素,如果超过vector的capacity则报错。

初始化vector时,默认不带参数的话,vector的初始capacity大小为10。当当前空间不足以加入新元素时,capacity会加倍,即从10变成20,40,80......

当然我们也可以使用下面两种带参数的构造

1.Vector vector=new Vector(int  capacity);指定初始化大小,不允许负数大小的初始化。如果初始化大小为0,则加入数据时大小变为1,然后每次扩充遵循加倍原则。

2.Vector vector=new Vector(int capacity,int increasesize)指定初始化大小,并且以后每次容量不足时,大小每次增加increasesize。


import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class Test {
    public static void main(String[] args){
        Vector vector=new Vector(0);
        System.out.println("vector的初始大小: "+vector.capacity());
        vector.add("大家好"); //Appends the specified element to the end of this Vector.
        vector.add("111");  //add方法将新元素加到末尾
        vector.add("222");
        vector.add("你好");               //elements()返回这个向量内所有元素的枚举
        Enumeration e=vector.elements();//Returns an enumeration of the components of this vector.
        System.out.println(vector.capacity());
        while(e.hasMoreElements()){
            System.out.println(e.nextElement());
        }
        System.out.println("---------分界线----------------------");
        vector.add(2,"我在第三位"); //add(int index,E element)将新元素加入到指定位置
        Iterator iterator=vector.iterator(); //使用迭代器
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        for(int i=0;i<100;i++) {
            vector.add(i);
            System.out.print(vector.capacity()+" ");
            if(i%10==0) System.out.println();
        }
        System.out.println(vector.capacity());
        System.out.println(vector.contains("你好"));
        System.out.println(vector.get(2));
    }
}

运行结果:

vector的初始大小: 10
10
大家好
111
222
你好
---------分界线----------------------
大家好
111
我在第三位
222
你好
10 
10 10 10 10 20 20 20 20 20 20 
20 20 20 20 40 40 40 40 40 40 
40 40 40 40 40 40 40 40 40 40 
40 40 40 40 80 80 80 80 80 80 
80 80 80 80 80 80 80 80 80 80 
80 80 80 80 80 80 80 80 80 80 
80 80 80 80 80 80 80 80 80 80 
80 80 80 80 160 160 160 160 160 160 
160 160 160 160 160 160 160 160 160 160 
160 160 160 160 160 160 160 160 160 160
true
我在第三位

初始化大小为0

vector的初始大小: 0
capacity:1
capacity:2
capacity:4
capacity:4
大家好
111
222
你好
8 8 8 8 16 16 16 16 16 16 
16 16 32 32 32 32 32 32 32 32 
32 32 32 32 32 32 32 32 64 64 
64 64 64 64 64 64 64 64 64 64 
64 64 64 64 64 64 64 64 64 64 
64 64 64 64 64 64 64 64 64 64 
128 128 128 128 128 128 128 128 128 128 
128 128 128 128 128 128 128 128 128 128 
128 128 128 128 128 128 128 128 128 128 
128 128 128 128 128 128 128 128 128 128 
128
true
222


  • 19
    点赞
  • 0
    评论
  • 63
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值