Java 向量
Java 向量
在本教程中,我们将学习 Vector 类以及如何使用它。我们还将了解它与 ArrayList 类有何不同,以及为什么我们应该使用数组列表。
Vector
类是 List
的实现 接口,允许我们创建类似于 ArrayList 类的可调整大小的数组。
Java Vector vs. ArrayList
在 Java 中,ArrayList
和 Vector
实现 List
接口并提供相同的功能。但是,它们之间存在一些差异。
Vector
类同步每个单独的操作。这意味着每当我们想要对向量执行一些操作时,Vector
类自动对该操作应用锁。
这是因为当一个线程正在访问一个向量,同时另一个线程试图访问它时,一个名为 ConcurrentModificationException
的异常 生成。因此,每次操作都连续使用锁会降低向量的效率。
但是,在数组列表中,方法是不同步的。相反,它使用 Collections.synchronizedList()
同步整个列表的方法。
注意: 推荐使用ArrayList
代替 Vector
因为向量不是线程安全的并且效率较低。
创建向量
以下是我们如何在 Java 中创建向量。
Vector<Type> vector = new Vector<>();
在这里,类型 表示链表的类型。例如,
// create Integer type linked list
Vector<Integer> vector= new Vector<>();
// create String type linked list
Vector<String> vector= new Vector<>();
向量方法
Vector
类还提供了 List
的可调整大小的数组实现 接口(类似于ArrayList
班级)。一些 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]
访问向量元素
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,
删除向量元素
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(): []
其他向量方法
方法 | 说明 |
---|---|
set() | 改变向量的一个元素 |
size() | 返回向量的大小 |
toArray() | 将向量转换为数组 |
toString() | 将向量转换为字符串 |
contains() | 在向量中搜索指定元素并返回布尔结果 |
java