Java Vector

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


Java Vector 与 ArrayList 对比

在Java中,ArrayListVector都实现了List接口并提供了相同的功能。然而,它们之间存在一些差异。

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

这是因为当一个线程正在访问向量时,同时另一个线程尝试访问它,会生成一个名为ConcurrentModificationException的异常。因此,这种对每个操作的连续锁定使得向量的效率较低。

然而,在ArrayList中,方法不同步。相反,它使用Collections.synchronizedList()方法来同步整个列表。

注意:建议使用ArrayList而不是Vector,因为向量效率较低。


创建 Vector

以下是我们在Java中创建向量的方法。

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

在此,Type表示链表的类型。例如,

// create Integer type linked list
Vector<Integer> vector= new Vector<>();

// create String type linked list
Vector<String> vector= new Vector<>();

Vector的方法

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


向Vector添加元素

  • add(element) - 将元素添加到向量
  • add(index, element) - 将元素添加到指定位置
  • addAll(vector) - 将一个向量的所有元素添加到另一个向量

例如,

import java.util.Vector;

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

        // Using the add() method
        mammals.add("Dog");
        mammals.add("Horse");

        // Using index number
        mammals.add(2, "Cat");
        System.out.println("Vector: " + mammals);

        // Using 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");

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

        // Using 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);

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

        // Using 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() 搜索向量中指定的元素,并返回布尔结果
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战