多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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`中搜索指定的元素并返回布尔结果 |