在本教程中,我们将学习Vector类以及如何使用它。我们还将学习它与ArrayList类的不同之处,以及为什么我们应该改用数组列表。
Vector类是List接口的一个实现,它允许我们创建类似于ArrayList类的可调整大小的数组。
在Java中,ArrayList和Vector都实现List接口并提供相同的功能。但是,它们之间存在一些差异。
Vector类同步每个单独的操作。这意味着每当我们想对向量执行某些操作时,Vector类就会自动对该操作应用锁。
这是因为当一个线程访问一个vector时,同时另一个线程试图访问它,会生成一个称为ConcurrentModificationException的异常。因此,对每个操作持续使用锁会降低向量的效率。
但是,在ArrayList中,方法是不同步的。相反,它使用Collections.synchronizedList()方法对整个列表进行同步。
注意:由于向量(vector)不是线程安全的并且效率较低,因此建议使用ArrayList代替Vector。
这是我们如何用Java创建向量(vector)。
Vector<Type> vector = new Vector<>();
此处,Type表示vector存储的数据类型。例如,
//创建整数类型的vector Vector<Integer> vector= new Vector<>(); //创建字符串类型的vector Vector<String> vector= new 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]
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,
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(): []
| 方法 | 内容描述 |
|---|---|
| set() | 更改向量的元素 |
| size() | 返回向量的大小 |
| toArray() | 将向量转换为数组 |
| toString() | 将向量转换为字符串 |
| contains() | 在向量中搜索指定的元素并返回一个布尔值 |