原文: https://www.programiz.com/java-programming/vector

在本教程中,我们将学习Vector类以及如何使用它。 我们还将学习它与ArrayList类的不同之处,以及为什么我们应该改用ArrayList

Vector类是List接口的实现,它使我们可以创建类似于 ArrayList 类的可调整大小的数组。


Java VectorArrayList

在 Java 中,ArrayListVector都实现List接口并提供相同的功能。 但是,它们之间存在一些差异。

Vector类同步每个单独的操作。 这意味着,每当我们要对Vector执行某些操作时,Vector类都会自动对该操作施加锁定。

这是因为当一个线程正在访问Vector时,同时另一个线程试图访问它时,会生成一个称为ConcurrentModificationException的异常。 因此,对于每个操作的这种连续使用锁使Vector的效率降低。

但是,在ArrayList中,方法不同步。 相反,它使用Collections.synchronizedList()方法来同步整个列表。

注意:建议使用ArrayList代替Vector,因为Vector不是线程安全的,并且效率较低。


创建Vector

这是我们如何用 Java 创建Vector

  1. Vector<Type> vector = new Vector<>();

在此,Type表示链表的类型。 例如,

  1. // create Integer type linked list
  2. Vector<Integer> vector= new Vector<>();
  3. // create String type linked list
  4. Vector<String> vector= new Vector<>();

Vector方法

Vector类还提供List接口的可调整大小的数组实现(类似于ArrayList类)。 一些Vector方法是:


Vector添加元素

  • add(element) - 向Vector添加元素
  • add(index, element) - 将元素添加到指定位置
  • addAll(vector) - 将Vector的所有元素添加到另一个Vector

例如,

  1. import java.util.Vector;
  2. class Main {
  3. public static void main(String[] args) {
  4. Vector<String> mammals= new Vector<>();
  5. // Using the add() method
  6. mammals.add("Dog");
  7. mammals.add("Horse");
  8. // Using index number
  9. mammals.add(2, "Cat");
  10. System.out.println("Vector: " + mammals);
  11. // Using addAll()
  12. Vector<String> animals = new Vector<>();
  13. animals.add("Crocodile");
  14. animals.addAll(mammals);
  15. System.out.println("New Vector: " + animals);
  16. }
  17. }

输出

  1. Vector: [Dog, Horse, Cat]
  2. New Vector: [Crocodile, Dog, Horse, Cat]

访问Vector元素

  • get(index) - 返回由索引指定的元素
  • iterator() - 返回迭代器对象以顺序访问Vector元素

例如:

  1. import java.util.Iterator;
  2. import java.util.Vector;
  3. class Main {
  4. public static void main(String[] args) {
  5. Vector<String> animals= new Vector<>();
  6. animals.add("Dog");
  7. animals.add("Horse");
  8. animals.add("Cat");
  9. // Using get()
  10. String element = animals.get(2);
  11. System.out.println("Element at index 2: " + element);
  12. // Using iterator()
  13. Iterator<String> iterate = animals.iterator();
  14. System.out.print("Vector: ");
  15. while(iterate.hasNext()) {
  16. System.out.print(iterate.next());
  17. System.out.print(", ");
  18. }
  19. }
  20. }

输出

  1. Element at index 2: Cat
  2. Vector: Dog, Horse, Cat,

删除Vector元素

  • remove(index) - 从指定位置移除元素
  • removeAll() - 删除所有元素
  • clear() - 删除所有元素。 比removeAll()更有效

例如:

  1. import java.util.Vector;
  2. class Main {
  3. public static void main(String[] args) {
  4. Vector<String> animals= new Vector<>();
  5. animals.add("Dog");
  6. animals.add("Horse");
  7. animals.add("Cat");
  8. System.out.println("Initial Vector: " + animals);
  9. // Using remove()
  10. String element = animals.remove(1);
  11. System.out.println("Removed Element: " + element);
  12. System.out.println("New Vector: " + animals);
  13. // Using clear()
  14. animals.clear();
  15. System.out.println("Vector after clear(): " + animals);
  16. }
  17. }

输出

  1. Initial Vector: [Dog, Horse, Cat]
  2. Removed Element: Horse
  3. New Vector: [Dog, Cat]
  4. Vector after clear(): []

其他Vector方法

方法 内容描述
set() 更改Vector的元素
size() 返回Vector的大小
toArray() Vector转换为数组
toString() Vector转换为字符串
contains() Vector中搜索指定的元素并返回布尔结果