跳到主要内容

Java Vector

提示
  1. 基本概念Vector 类是 Java List 接口的实现,用于创建可调整大小的数组,类似于 ArrayList
  2. 与 ArrayList 的比较Vector 类是同步的,为每个单独的操作应用锁,从而降低效率;ArrayList 方法不同步,整体同步通过 Collections.synchronizedList() 实现。
  3. Vector 的操作Vector 支持添加元素 (add), 访问元素 (getiterator()), 移除元素 (remove, removeAll, clear), 以及其他方法如 set, size, toArray, toString, contains

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

Java Vector 与 ArrayList 的比较

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

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

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

然而,在数组列表中,方法不是同步的。相反,它使用 Collections.synchronizedList() 方法来整体同步列表。

注意: 推荐使用 ArrayList 替代 Vector,因为向量的效率较低。

创建 Vector

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

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

这里,Type 表示链表的类型。例如,

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

// 创建 String 类型的链表
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<>();

// 使用 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("索引 2 处的元素: " + element);

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

}

输出

索引 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("初始 Vector: " + animals);

// 使用 remove()
String element = animals.remove(1);
System.out.println("移除的元素: " + element);
System.out.println("新 Vector: " + animals);

// 使用 clear()
animals.clear();
System.out.println("clear() 后的 Vector: " + animals);
}
}

输出

初始 Vector: [Dog, Horse, Cat]
移除的元素: Horse
Vector: [Dog, Cat]
clear() 后的 Vector: []

其他 Vector 方法

方法描述
set()更改 vector 的一个元素
size()返回 vector 的大小
toArray()将 vector 转换为数组
toString()将 vector 转换为字符串
contains()搜索 vector 中的指定元素,并返回一个布尔值结果