深入理解 Java Vector:用法、特性及与 ArrayList 的对比
深入理解 Java Vector
本指南详细讲解 Java Vector 类、其核心方法,以及它与 ArrayList 的区别。了解何时应选择 Vector 以获得线程安全,并掌握性能考量。
Vector 类实现了 List 接口,提供了一个可调整大小的数组,功能类似 ArrayList。但与 ArrayList 不同,Vector 的每个修改操作都经过同步,这使其天然具备线程安全性,但在单线程场景下可能导致性能下降。
Java Vector 与 ArrayList 的对比
ArrayList 和 Vector 都提供动态数组,但它们在并发处理上存在关键差异:
- Vector:每个方法调用都会同步,在执行前获取实例锁。
- ArrayList:默认非同步;如需线程安全,可使用
Collections.synchronizedList()包装。
由于逐操作加锁,Vector 在多线程环境下可能产生额外开销;而当不需要线程安全时,ArrayList 通常性能更优。
建议: 大多数应用首选 ArrayList。仅在遗留代码要求或需要内置同步而不想额外包装时,才使用 Vector。
创建 Vector
可使用泛型实例化 Vector:
Vector<Type> vector = new Vector<>();
示例:
// Integer 类型的 Vector
Vector<Integer> numbers = new Vector<>();
// String 类型的 Vector
Vector<String> words = new Vector<>();
Vector 的核心方法
Vector 类提供完整的列表操作,与 ArrayList 基本一致。常用方法包括:
add(E element)— 在末尾追加元素。add(int index, E element)— 在指定位置插入元素。addAll(Collection<? extends E> c)— 批量添加元素。get(int index)— 按索引获取元素。remove(int index)— 按索引删除元素。clear()— 清空所有元素。size()— 返回当前元素数量。contains(Object o)— 判断是否包含指定元素。toArray()— 转换为数组。toString()— 返回字符串表示。set(int index, E element)— 替换指定位置的元素。
向 Vector 添加元素
add(element)— 追加元素。add(index, element)— 在指定索引处插入。addAll(vector)— 添加另一个 Vector 的所有元素。
示例:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> mammals = new Vector<>();
mammals.add("Dog");
mammals.add("Horse");
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
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");
String element = animals.get(2);
System.out.println("索引 2 处的元素: " + element);
Iterator<String> iter = animals.iterator();
System.out.print("Vector: ");
while (iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
}
}
输出
索引 2 处的元素: Cat Vector: Dog, Horse, Cat,
从 Vector 移除元素
remove(index)— 删除指定位置的元素。clear()— 高效清空所有元素。
示例:
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);
String removed = animals.remove(1);
System.out.println("被移除的元素: " + removed);
System.out.println("新 Vector: " + animals);
animals.clear();
System.out.println("clear() 后的 Vector: " + animals);
}
}
输出
初始 Vector: [Dog, Horse, Cat] 被移除的元素: Horse 新 Vector: [Dog, Cat] clear() 后的 Vector: []
Vector 的其他常用方法
| 方法 | 说明 |
|---|---|
set(int index, E element) | 替换指定位置的元素 |
size() | 返回元素数量 |
toArray() | 转换为数组 |
toString() | 返回字符串表示 |
contains(Object o) | 判断是否包含指定元素 |
java
- 精通 Java 运算符:类型、语法与实战示例
- Java 注释:类型、用法与最佳实践
- 精通 Java if…else:控制流全解析
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- Java break 语句:用法、时机与标签 break 详解
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java 匿名内部类:定义、语法与实战示例
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
- Java 8 速查手册:核心新特性、语法、API 与最佳实践一站式参考