Java Vector
提示
- 基本概念:
Vector
类是 JavaList
接口的实现,用于创建可调整大小的数组,类似于ArrayList
。 - 与 ArrayList 的比较:
Vector
类是同步的,为每个单独的操作应用锁,从而降低效率;ArrayList
方法不同步,整体同步通过Collections.synchronizedList()
实现。 - Vector 的操作:
Vector
支持添加元素 (add
), 访问元素 (get
和iterator()
), 移除元素 (remove
,removeAll
,clear
), 以及其他方法如set
,size
,toArray
,toString
,contains
。
Vector
类是 List
接口的一个实现,允许我们创建类似于 ArrayList 类的可调整大小的数组。
Java Vector 与 ArrayList 的比较
在 Java 中,ArrayList
和 Vector
都实现了 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 中的指定元素,并返回一个布尔值结果 |