Vector类是List接口的一个实现,它允许我们创建可调整大小的数组,类似于ArrayList类。
Java Vector 与 ArrayList 对比
在Java中,ArrayList和Vector都实现了List接口并提供了相同的功能。然而,它们之间存在一些差异。
Vector类对每个单独的操作进行同步。这意味着当我们想对向量执行任何操作时,Vector类会自动为该操作应用锁。
这是因为当一个线程正在访问向量时,同时另一个线程尝试访问它,会生成一个名为ConcurrentModificationException的异常。因此,这种对每个操作的连续锁定使得向量的效率较低。
然而,在ArrayList中,方法不同步。相反,它使用Collections.synchronizedList()方法来同步整个列表。
注意:建议使用ArrayList而不是Vector,因为向量效率较低。
创建 Vector
以下是我们在Java中创建向量的方法。
Vector<Type> vector = new Vector<>();
在此,Type表示链表的类型。例如,
// create Integer type linked list
Vector<Integer> vector= new Vector<>();
// create String type linked list
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<>();
// Using the add() method
mammals.add("Dog");
mammals.add("Horse");
// Using index number
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
// Using 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");
// Using get()
String element = animals.get(2);
System.out.println("Element at index 2: " + element);
// Using 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,
删除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("Initial Vector: " + animals);
// Using remove()
String element = animals.remove(1);
System.out.println("Removed Element: " + element);
System.out.println("New Vector: " + animals);
// Using 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(): []
其他Vector方法
| 方法 | 描述 |
|---|---|
set() |
更改向量的元素 |
size() |
返回向量的大小 |
toArray() |
将向量转换为数组 |
toString() |
将向量转换为字符串 |
contains() |
搜索向量中指定的元素,并返回布尔结果 |