📜  Java中的向量与数组列表(1)

📅  最后修改于: 2023-12-03 15:31:58.517000             🧑  作者: Mango

Java中的向量与数组列表

概述

在Java中,向量(Vector)和数组列表(ArrayList)都是可以动态增加或减少大小的类,它们都实现了List接口。本文将介绍Java中向量和数组列表的用法,优缺点以及它们的区别。

向量(Vector)

向量是Java早期提供的一种动态数组,需要注意的是,向量是线程安全的。在向量中,元素是根据插入顺序排列的,可以通过索引来访问每个元素。向量允许插入重复的元素,而且允许插入null值。向量也支持集合操作(如并集、交集、差集等)。

创建向量

可以使用以下方式来创建一个向量:

Vector<Integer> vector = new Vector<Integer>();
向向量中添加元素

向向量中添加元素有以下几种方法:

  1. add(element):添加一个元素到向量的末尾。
  2. add(index, element):在指定索引位置向向量中添加元素。
  3. addAll(Collection):将另一个集合中的元素全部添加到向量末尾。
  4. addAll(index, Collection):将另一个集合中的元素添加到指定索引位置之前。
从向量中获取元素

从向量中获取元素有以下几种方法:

  1. get(index):获取指定索引位置的元素。
  2. firstElement():获取向量的第一个元素。
  3. lastElement():获取向量的最后一个元素。
迭代向量

使用向量中的Iterator可以迭代所有元素。迭代方法有两种:

  1. 使用迭代器进行迭代:
Iterator<Integer> iterator = vector.iterator();
while(iterator.hasNext()) {
    Integer element = iterator.next();
    // 进行操作
}
  1. 使用for-each方法进行迭代:
for(Integer element : vector) {
    // 进行操作
}
示例代码
Vector<Integer> vector = new Vector<Integer>();
vector.add(1);
vector.add(2);
vector.add(3);

for(Integer element : vector) {
    System.out.println(element);
}
数组列表(ArrayList)

数组列表是向量的替代品,它也是线程安全的,但性能比向量更好。数组列表没有像向量那样支持同步方法,因此在多线程环境下使用时需要手动处理同步问题。在数组列表中,元素也是根据插入顺序排列的。

创建数组列表

可以使用以下方式来创建一个数组列表:

ArrayList<Integer> arrayList = new ArrayList<Integer>();
向数组列表中添加元素

向数组列表中添加元素有以下几种方法:

  1. add(element):添加一个元素到数组列表的末尾。
  2. add(index, element):在指定索引位置向数组列表中添加元素。
  3. addAll(Collection):将另一个集合中的元素全部添加到数组列表末尾。
  4. addAll(index, Collection):将另一个集合中的元素添加到指定索引位置之前。
从数组列表中获取元素

从数组列表中获取元素有以下几种方法:

  1. get(index):获取指定索引位置的元素。
  2. indexOf(element):获取元素在数组列表中的索引位置。
  3. lastIndexOf(element):获取元素在数组列表中的最后一个索引位置。
  4. subList(fromIndex, toIndex):获取数组列表中从fromIndex(包含)到toIndex(不包含)的元素子列表。
迭代数组列表

使用数组列表中的Iterator可以迭代所有元素。迭代方法有两种:

  1. 使用迭代器进行迭代:
Iterator<Integer> iterator = arrayList.iterator();
while(iterator.hasNext()) {
    Integer element = iterator.next();
    // 进行操作
}
  1. 使用for-each方法进行迭代:
for(Integer element : arrayList) {
    // 进行操作
}
示例代码
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);

for(Integer element : arrayList) {
    System.out.println(element);
}
向量与数组列表的区别

在使用向量和数组列表时,需要注意它们之间的区别。区别如下:

  1. 线程安全:向量是线程安全的,而数组列表不是。
  2. 同步方法:向量提供了一些同步方法,而数组列表没有。
  3. 性能:数组列表比向量要快。
  4. 扩容机制:向量在扩容时每次增加一倍,而数组列表在扩容时每次增加50%。
总结

向量和数组列表都是Java中动态数组的实现,它们都是线程安全的,但向量比数组列表性能差,因此在需求不需要线程安全和同步方法的情况下,应该使用数组列表。