如何在 Java 中在 List 和 Array 之间进行转换?

javaobject oriented programmingprogramming更新于 2025/2/4 17:16:17

List 接口是一个 Collection,它存储一系列元素。ArrayList 是 List 接口最流行的实现。列表为用户提供了对在 List 中插入元素位置的相当精确的控制。这些元素可通过其索引访问并可搜索。ArrayList 是 List 接口最常见的实现。

数组是一种数据结构,它存储相同类型元素的固定大小顺序集合。数组用于存储数据集合,但将数组视为相同类型变量的集合通常更有用。

List 接口提供了使用 toArray() 方法将列表转换为数组的方法。其中一个 toArray() 方法接受另一个对象数组,这有助于将列表转换为特定类型的数组。否则,我们可以使用不带参数的 toArray() 来获取 Object 数组。在本文中,我们将通过完整的示例介绍 List 的 toArray() 方法,以演示如何使用 toArray() 方法从列表中获取数组。

1. 使用不带参数的 toArray() 方法。

Object[] toArray()

注意事项

  • 返回一个数组,该数组按正确顺序包含此列表中的所有元素(从第一个元素到最后一个元素)。

  • 返回的数组将是"安全的",因为此列表不维护对它的任何引用。(换句话说,即使此列表由数组支持,此方法也必须分配一个新数组)。因此,调用者可以自由修改返回的数组。

  • 此方法充当基于数组和基于集合的 API 之间的桥梁。

返回

包含此列表中所有元素的数组,且顺序正确。

2. 将 toArray() 与数组一起使用。

<T> T[] toArray(T[] a)

注意事项

  • 返回包含此列表中所有元素的数组,且顺序正确(从第一个元素到最后一个元素)。

  • 返回的数组将是"安全的"因为此列表不维护对它的任何引用。

  • 即使此列表由数组支持,此方法也必须分配一个新数组。

  • 因此,调用者可以自由修改返回的数组。

  • 此方法充当基于数组和基于集合的 API 之间的桥梁。

类型参数

  • T - 数组的运行时类型。

参数

  • a - 如果此列表足够大,则为要存储此列表元素的数组;否则,将为此目的分配一个相同运行时类型的新数组。

返回

包含此列表元素的数组。

抛出

  • ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。

  • NullPointerException - 如果指定数组为空。

Arrays 类提供了一个 asList() 方法来获取包含数组所有元素的列表。

public static <T> List<T> asList(T... a)

类型参数

  • T - 元素的运行时类型。

参数

  • a - 将支持列表的数组。

返回

指定数组的列表视图。

示例 1

以下示例展示了 toArray() 和 Arrays.asList() 方法的用法 −

package com.tutorialspoint;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CollectionsDemo {
   public static void main(String[] args) {
      String[] array = {"A", "B", "C"};

      // 数组到列表的转换
      List<String> list = new ArrayList<>(Arrays.asList(array));
      System.out.println("列表: " + list);

      // 列表到数组的转换
      Object[] items = list.toArray();

      for (Object object : items) {
         System.out.print(object + " ");
      }
   }
}

输出

将产生以下结果 −

列表: [A, B, C]
A B C

示例 2

以下是另一个示例,展示了使用特定类型数组和 Arrays.asList() 方法的 toArray() −

package com.tutorialspoint;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CollectionsDemo {
   public static void main(String[] args) {
      String[] array = {"A", "B", "C"};

      // 数组到 List 的转换
      List<String> list = new ArrayList<>(Arrays.asList(array));
      System.out.println("列表: " + list);

      // 列表到数组的转换
      String[] strings = list.toArray(new String[0]);

      for (String string : strings) {
         System.out.print(string + " ");
      }    } } 

输出

这将产生以下结果 −

 
列表:[A, B, C]
A B C

相关文章


有用资源