📌  相关文章
📜  Java中的 AbstractSequentialList toArray(T[]) 方法示例(1)

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

Java 中的 AbstractSequentialList toArray(T[]) 方法

AbstractSequentialListJava 编程语言中的抽象类,它实现了 List 接口,但未提供对随机访问的支持。

AbstractSequentialList 中的 toArray(T[]) 方法可以将列表中的元素转换为数组,并将其存储在给定的数组中。该方法返回的是数组的引用。

/**
 * 返回一个包含此列表中所有元素的数组。
 *
 * 如果指定的数组足够大来容纳列表,则将元素复制到指定的数组中,否则为此分配一个新的数组。
 * 如果指定的数组大于此列表,则紧跟列表结束后的数组索引将设置为 null。
 *
 * 此方法充当基于数组的 API 和基于集合的 API 之间的桥梁。
 *
 * @param a 要存储列表元素的数组(如果它足够大);否则,为此分配一个具有相同运行时类型的新数组。
 * @return 包含列表中所有元素的数组。
 * @throws ArrayStoreException 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型
 * @throws NullPointerException 如果指定的数组为空
 */
public <T> T[] toArray(T[] a);

特别说明:方法中的 T 表示类型参数。

我们需要注意一下 toArray(T[]) 方法的一些重要点:

  • 该方法输入一个数组作为参数;
  • 如果使用的数组长度不够,则会自动分配一个新的数组;
  • 如果使用的数组长度过长,则会将数组中的多余元素设为 null
  • 该方法的返回值为数组的引用;
  • 要确保使用的数组类型和元素类型一致,否则会抛出 ArrayStoreException 异常;
  • 使用该方法得到的数组元素顺序与列表元素顺序一致。

下面是一个使用 AbstractSequentialList toArray(T[]) 方法的示例:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<String> arrayList = new ArrayList<>();
    arrayList.add("Alice");
    arrayList.add("Bob");
    arrayList.add("Charlie");

    // 将 ArrayList 转换为 String 数组
    String[] array = new String[arrayList.size()];
    array = arrayList.toArray(array);

    for (String str : array) {
      System.out.println(str);
    }

    List<Integer> linkedList = new LinkedList<>();
    linkedList.add(1);
    linkedList.add(2);
    linkedList.add(3);

    // 将 LinkedList 转换为 Integer 数组
    Integer[] array2 = new Integer[linkedList.size()];
    array2 = linkedList.toArray(array2);

    for (int num : array2) {
      System.out.println(num);
    }
  }
}
输出结果:
Alice
Bob
Charlie
1
2
3

在上述示例中,我们首先声明了两个列表 arrayListlinkedList,它们的类型分别为 ArrayListLinkedList

我们通过 add() 方法为它们添加元素。

然后,我们分别使用 toArray(T[]) 方法将这两个列表转换为数组。在转换的过程中,我们使用的都是同一类型的数组,分别为 String[]Integer[]

最后,我们打印出了这两个数组中的所有元素。你会发现,输出结果是与列表中元素的顺序一致的,这正是我们前面提到过的。