编辑这个页面须要登录或更高权限!

Java Vector(向量)

在本教程中,我们将学习Vector类以及如何使用它。我们还将学习它与ArrayList类的不同之处,以及为什么我们应该改用数组列表。

Vector类是List接口的一个实现,它允许我们创建类似于ArrayList类的可调整大小的数组。

Java向量(vector)与ArrayList

在Java中,ArrayList和Vector都实现List接口并提供相同的功能。但是,它们之间存在一些差异。

Vector类同步每个单独的操作。这意味着每当我们想对向量执行某些操作时,Vector类就会自动对该操作应用锁。

这是因为当一个线程访问一个vector时,同时另一个线程试图访问它,会生成一个称为ConcurrentModificationException的异常。因此,对每个操作持续使用锁会降低向量的效率。

但是,在ArrayList中,方法是不同步的。相反,它使用Collections.synchronizedList()方法对整个列表进行同步。

注意:由于向量(vector)不是线程安全的并且效率较低,因此建议使用ArrayList代替Vector。

创建向量(vector)

这是我们如何用Java创建向量(vector)。

Vector<Type> vector = new Vector<>();

此处,Type表示vector存储的数据类型。例如,

//创建整数类型的vector
Vector<Integer> vector= new Vector<>();

//创建字符串类型的vector
Vector<String> vector= new Vector<>();

向量(vector)方法

Vector类还提供List接口的可调整大小的数组实现(类似于ArrayList类)。 一些Vector方法是:

向量添加元素

  • add(element) - 向向量(vector)添加元素

  • add(index, element) - 将元素添加到指定位置

  • addAll(vector) - 将向量(vector)的所有元素添加到另一个向量(vector)

例如,

import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector<String> mammals= new Vector<>();

        //使用add()方法
        mammals.add("Dog");
        mammals.add("Horse");

        //使用索引号
        mammals.add(2, "Cat");
        System.out.println("Vector: " + mammals);

        // 使用 addAll() 方法
        Vector<String> animals = new Vector<>();
        animals.add("Crocodile");

        animals.addAll(mammals);
        System.out.println("New Vector: " + animals);
    }
}

输出结果

Vector: [Dog, Horse, Cat]
New Vector: [Crocodile, Dog, Horse, Cat]

访问vector元素

  • get(index) - 返回由索引指定的元素

  • iterator() - 返回迭代器对象以顺序访问矢量元素

例如,

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

class Main {
    public static void main(String[] args) {
        Vector<String> animals= new Vector<>();
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");

        // 使用 get() 方法
        String element = animals.get(2);
        System.out.println("Element at index 2: " + element);

        // 使用 iterator()
        Iterator<String> iterate = animals.iterator();
        System.out.print("Vector: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

输出结果

Element at index 2: Cat
Vector: Dog, Horse, Cat,

删除vector元素

  • remove(index) - 从指定位置删除元素

  • removeAll() - 删除所有元素

  • clear() - 删除所有元素。它比removeAll()更高效

例如,

import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector<String> animals= new Vector<>();
        animals.add("Dog");
        animals.add("Horse");
        animals.add("Cat");

        System.out.println("Initial Vector: " + animals);

        //使用 remove() 方法
        String element = animals.remove(1);
        System.out.println("Removed Element: " + element);
        System.out.println("New Vector: " + animals);

        // 使用 clear() 方法
        animals.clear();
        System.out.println("Vector after clear(): " + animals);
    }
}

输出结果

Initial Vector: [Dog, Horse, Cat]
Removed Element: Horse
New Vector: [Dog, Cat]
Vector after clear(): []

向量(vector)其他方法

方法内容描述
set()更改向量的元素
size()返回向量的大小
toArray()将向量转换为数组
toString()将向量转换为字符串
contains()

在向量中搜索指定的元素并返回一个布尔值

Java 菜鸟教程
Java 流程控制
Java 数组
Java 面向对象(I)
Java 面向对象(II)
Java 面向对象(III)
Java 异常处理
Java 列表(List)
Java Queue(队列)
Java Map集合
Java Set集合
Java 输入输出(I/O)
Java Reader/Writer
Java 其他主题