# Java `Vector`

> 原文： [https://www.programiz.com/java-programming/vector](https://www.programiz.com/java-programming/vector)

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

`Vector`类是`List`接口的实现，它使我们可以创建类似于 [ArrayList](/java-programming/arraylist "Java ArrayList") 类的可调整大小的数组。

* * *

## Java `Vector`与`ArrayList`

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

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

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

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

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

* * *

## 创建`Vector`

这是我们如何用 Java 创建`Vector`。

```java
Vector<Type> vector = new Vector<>(); 
```

在此，`Type`表示链接列表的类型。 例如，

```java
// 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)` - 向`Vector`添加元素
*   `add(index, element)` - 将元素添加到指定位置
*   `addAll(vector)` - 将`Vector`的所有元素添加到另一个`Vector`

例如，

```java
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);
    }
} 
```

**输出**

```java
Vector: [Dog, Horse, Cat]
New Vector: [Crocodile, Dog, Horse, Cat] 
```

* * *

## 访问`Vector`元素

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

例如：

```java
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(", ");
        }
    }
} 
```

**输出**：

```java
Element at index 2: Cat
Vector: Dog, Horse, Cat, 
```

* * *

## 删除`Vector`元素

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

例如：

```java
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);
    }
} 
```

**输出**：

```java
Initial Vector: [Dog, Horse, Cat]
Removed Element: Horse
New Vector: [Dog, Cat]
Vector after clear(): [] 
```

* * *

## 其他`Vector`方法

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