Java 数组转列表

2025年3月26日 | 6分钟阅读

在 Java 编程中,数组和列表是基本的数据结构,通常用于存储元素的集合。虽然数组提供固定大小的存储,但列表提供动态的大小调整和其他功能。有时,我们可能需要将数组转换为列表以进行正确转换,或使其与需要列表的库兼容。在本节中,我们将探讨将 Java 数组转换为列表的各种方法,包括每种方法的示例和思路。

Java 中数组转列表

Java 数组是相同数据类型的多个值的集合。数组可以包含对象和原始类型。这取决于数组的定义。如果数组定义为原始类型,则数组的值存储在连续的内存位置。如果数组包含对象元素,则元素存储在堆段中。

Java 中,List 是属于 Java 集合框架的接口。它以对象的形式有序地存储元素,并保留插入顺序。它允许我们存储重复值。类 ArrayListLinkedListVectorStack 实现 List 接口。

Java Array to List

Java 提供了五种将数组转换为列表的方法,如下所示:

  • 原生方法
  • 使用 Arrays.asList() 方法
  • 使用 Collections.addAll() 方法
  • 使用 Java 8 Stream API
  • 使用 Guava Lists.newArrayList() 方法

原生方法

这是将 Java 数组转换为列表的最简单方法。在此方法中,我们首先创建一个空列表,然后将数组的所有元素添加到该列表中。让我们看一个例子。

ArrayToListExample1.java

输出

Java Array to List

使用 Arrays.asList() 方法

这是 Java Arrays 类的方法,属于 java.util 包。当我们使用 asList() 方法和 Collection.toArray() 方法时,它充当基于数组和基于集合的 API 之间的桥梁。

语法

该方法将一个数组作为参数解析,列表将由该数组支持。它返回指定数组的一个可序列化的固定大小的列表视图。让我们看一个例子。

ArrayToListExample2.java

输出

Java Array to List

使用 Collections.addAll() 方法

这是 Java Collections 类的方法。它属于 java.util 包。该类提供了一个名为 addAll() 的方法。我们可以使用该方法将数组转换为列表。它将所有元素添加到指定的集合中。我们可以单独指定元素,也可以以数组的形式指定。它的作用与 c.addAll(Arrays.asList(elements)) 相同。它比其他实现更快。

语法

它解析两个参数

  • c:要添加元素的集合。
  • elements:要插入 c 的元素。

如果集合因调用而发生更改,则返回 true。它会抛出以下异常

  • 如果参数 c 不支持 add 操作,则抛出 UnsupportedOperationException
  • 如果指定的数组元素包含一个或多个 null 值,并且 c 不允许 null 元素,则抛出 NullPointerException
  • 如果任何数组元素阻止其被添加到参数 c 中,则抛出 IllegalPointerException

让我们看一个示例。

ArrayToListExample3.java

输出

Java Array to List

使用 Java 8 Stream API

Java 8 提供了 Stream API 来处理对象集合。它是一系列可以进行管道操作以产生所需结果的方法。请记住,它不会更改原始数据结构。它会根据管道方法提供输出。我们可以通过多种方式获得流,但在下面的程序中,我们使用了 Arrays.stream(Object[]) 来获得流。

Collectors.toList() 方法:该方法返回一个 Collector,该 Collector 在遭遇顺序中将输入元素收集到一个新创建的列表中。

语法

其中 T 是我们指定的元素类型。该方法不对类型、可变性、线程安全性和可序列化性提供保证。

让我们在 Java 程序中使用 Stream API 将数组转换为列表。

ArrayToListExample4.java

输出

Java Array to List

使用 Guava Lists.newArrayList()

这是 Lists 类的方法,属于 com.google.common.collect 包。该类提供了一个 newArrayList() 方法,该方法创建了一个可变的空 ArrayList 实例,其中包含指定数组的元素。

语法

注意:newArrayList() 方法适用于 Java 6 及更早版本。在更高版本中,它已被弃用。而是直接使用 ArrayList 构造函数。

ArrayToListExample5.java

输出

Java Array to List

注意事项

在将数组转换为列表时,请务必考虑以下几点:

可变性:Arrays.asList() 返回一个固定大小的列表,而其他方法创建可变列表。根据是否需要可变列表或不可变列表来选择合适的方法。

性能:Arrays.asList() 提供对原始数组的视图,因此在内存使用方面效率很高。但是,如果需要可变列表,可以考虑使用 ArrayList 或流。

Null 元素:在处理包含 null 元素的数组时要小心,因为某些方法可能会抛出 NullPointerException。

原始数组:对于原始数组(如 int[]、double[]),不能直接使用 Arrays.asList()。在这种情况下,需要使用包装类或手动转换。

结论

修改 Java 数组列表是常见的编程任务,Java 提供了许多方法来高效地完成此操作。无论您需要固定大小的列表还是可变大小的列表,都有方便的选择。了解这些方法之间的差异将帮助您选择最适合您应用程序的方法,并考虑您的具体需求。