Vector
是 Java 中的一个类,它实现了 List
接口,并且是一种动态数组。与 ArrayList
类似,Vector
也可以动态地增长和缩小,但它在执行线程安全方面有所不同。Vector
类中的大多数方法都是同步的,这意味着它适用于多线程环境,但在单线程环境中使用时可能会因为同步而降低性能。
主要特点
-
线程安全:
Vector
的方法(如add()
,remove()
,get()
,set()
等)都是同步的,因此它可以在多线程环境中安全地使用,而无需额外的同步代码。 -
动态数组:
Vector
可以根据需要动态地增加或减少其容量。当元素被添加到Vector
中时,如果当前存储能力不足以容纳所有元素,Vector
的容量会自动增加。 -
索引访问:与
ArrayList
一样,Vector
允许通过索引快速访问、插入和删除元素。
注意事项
-
性能:在单线程应用中,由于
Vector
的方法都是同步的,因此它的性能可能不如ArrayList
。在不需要线程安全的情况下,推荐使用ArrayList
。 -
迭代器和分割器:
Vector
支持使用Iterator
和ListIterator
进行迭代。同时,Java 5 引入了for-each
循环,这使得遍历Vector
变得更加简单。 -
扩容机制:当
Vector
的容量不足以容纳更多元素时,它会增加其容量。默认情况下,Vector
的容量增长是原来的两倍加一(即(newCapacity = oldCapacity * 2) + 1
)。但可以通过构造器指定初始容量和容量增长量。 -
与ArrayList的区别:除了线程安全性的区别外,
Vector
和ArrayList
在功能和使用上非常相似。选择哪一个取决于你的具体需求,是否需要线程安全以及是否愿意为此牺牲性能。
基本用法
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
// 创建一个Vector实例
Vector<String> vector = new Vector<>();
// 向Vector中添加元素
vector.add("Java");
vector.add("Python");
vector.add("C++");
// 访问Vector中的元素
System.out.println(vector.get(0)); // 输出: Java
// 遍历Vector
for (String language : vector) {
System.out.println(language);
}
// 移除元素
vector.remove("Python");
// 获取Vector的大小
System.out.println("Size: " + vector.size());
// 判断Vector是否为空
if (!vector.isEmpty()) {
System.out.println("Vector is not empty.");
}
}
}