如何在Java中转换List和Array?


List接口是一个集合,它存储一系列元素。ArrayList是List接口最流行的实现。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 - 如果指定的数组为null。

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"};

      // array to List conversion
      List<String> list = new ArrayList<>(Arrays.asList(array));
      System.out.println("List: " + list);

      // list to array conversion
      Object[] items = list.toArray();

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

输出

这将产生以下结果:

List: [A, B, C]
A B C

示例2

以下另一个示例演示了使用特定类型数组的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"};

      // array to List conversion
      List<String> list = new ArrayList<>(Arrays.asList(array));
      System.out.println("List: " + list);

      // list to array conversion
      String[] strings = list.toArray(new String[0]);

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

输出

这将产生以下结果:

List: [A, B, C]
A B C

更新于:2022年5月26日

850 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.