📜  Java向量Vector

📅  最后修改于: 2020-09-26 16:12:59             🧑  作者: Mango

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

 

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


Java向量与ArrayList

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

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

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

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

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


创建向量

这是我们如何用Java创建向量。

Vector vector = new Vector<>();

此处, 类型表示链接列表的类型。例如,

// create Integer type linked list
Vector vector= new Vector<>();

// create String type linked list
Vector vector= new Vector<>();

向量方法

 

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


向矢量添加元素

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

例如,

import java.util.Vector;

class Main {
    public static void main(String[] args) {
        Vector 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 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 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 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 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(): []

其他向量方法

Methods Descriptions
set() changes an element of the vector
size() returns the size of the vector
toArray() converts the vector into an array
toString() converts the vector into a String
contains() searches the vector for specified element and returns a boolean result