您的位置:

Java Vector类介绍

一、前言

在Java开发中,常常涉及到数据结构的使用。其中,常使用的一种数据结构是Vector。Vector类在Java中属于集合类,是一种线程安全的动态数组,实现了List接口,具有数组的相关特性,支持自动增长。

本文将从以下几个方面对Java Vector类展开介绍:Vector的定义、创建、添加元素、删除元素、获取元素、遍历元素、扩容机制、线程安全等。通过本文的介绍,读者应该能够对Vector类有更加深入的理解。

二、Vector类的基本使用方法

1. Vector的定义与创建

//定义Vector对象
Vector<String> vec = new Vector<>();
//创建Vector对象
vec.add("str1");
vec.add("str2");
vec.add("str3");

Vector被定义为一个带有泛型参数的类,类名后面的<String>是泛型——Vector的元素类型为String。在创建对象时,可以通过add方法向创建好的Vector中添加元素。

2. 向Vector中添加元素

vec.add("str4");

可以使用Vector的add方法将新的元素加入到Vector中。而如果添加的值已经存在,Vector会将该值添加到数组末尾。

3. 从Vector中删除元素

String str = vec.remove(2);

可以使用Vector的remove方法从数组中删除指定位置的元素。方法返回被删除的元素。

4. 获取Vector中的元素

for (int i=0;i<vec.size();i++) {
    System.out.println(vec.get(i));
}

可以使用Vector的get方法获取数组中指定位置的元素。我们可以通过遍历数组,使用for循环配合get方法取出数组中的所有元素。

5. 遍历Vector中的元素

for (String str : vec) {
    System.out.println(str);
}

使用foreach循环遍历Vector中的元素。

6. Vector的扩容机制

在默认情况下,当向Vector中添加元素时,如果Vector的内部数组已经满了,Vector会将其内部数组的大小扩大一倍。

Vector<Integer> vector = new Vector<>();
for(int i = 0; i < 11; i++) {
    vector.add(i);
    System.out.println("Element " + i + " added to vector. Current size of Vector: " + vector.size());
}

上述代码中,向一个空的Vector中添加11个元素。当添加第11个元素时,Vector的大小为20,这是因为在第10个元素被添加到Vector时,由于Vector内部数组大小扩容,容量变为20。

7. Vector的线程安全

Vector类是线程安全的,因为它包含了同步方法来确保操作的原子性。

Vector<String> vec = new Vector<>();
vec.add("str1");
vec.add("str2");
vec.add("str3");
new Thread(() -> {
    for (int i=0;i<10;i++) {
        vec.add("new string Element" + i);
    }
}).start();
new Thread(() -> {
    while (true) {
        if (vec.size() > 3) {
            vec.remove(1);
        }
    }
}).start();

上述代码中,主线程创建一个大小为3的Vector,并向其中添加三个元素。随后启动两个新线程,一个向Vector中添加10个新的元素,另一个在Vector中删除位置为1的元素。此时,我们可以看到,在两个线程同时运行时,Vector依然可以正常运行,不会导致数据错乱。

三、小结

本文介绍了Java中Vector类的基本用法,包括定义与创建、添加元素、删除元素、获取元素、遍历元素、扩容机制、线程安全等。其中,线程安全是Vector独有的一项特性,它具有与ArrayList相同的特点,但可以安全地在多线程应用程序中使用。值得注意的是,Java官方建议在使用Vector时,仅在多线程情况下使用,否则建议使用ArrayList作为代替。