请描述List和数组之间相互转换的具体过程
参考回答
在 Java 中,List
和数组可以相互转换。以下是具体的转换方式和示例代码:
1. 从数组转换为 List
Java 提供了多个方法将数组转换为 List
:
1.1 使用 Arrays.asList()
- 方法描述:将数组转换为一个固定大小的
List
,原数组和生成的List
是共享数据的(即修改其中一个会影响另一个)。 - 注意:转换后的
List
不能调整大小(如add()
或remove()
操作会抛出UnsupportedOperationException
)。
代码示例:
1.2 使用 ArrayList
构造函数
- 方法描述:创建一个新的
ArrayList
,将数组中的元素拷贝到List
中。新生成的List
不会受原数组的影响。
代码示例:
1.3 使用 Collections.addAll()
- 方法描述:将数组中的所有元素添加到现有的
List
中。 - 适用场景:可以向现有的
List
添加数组中的元素。
代码示例:
2. 从 List
转换为数组
Java 提供了多个方法将 List
转换为数组:
2.1 使用 toArray()
方法
- 方法描述:将
List
转换为数组。 - 注意:需要指定目标数组的类型。
代码示例:
2.2 使用流(Stream)API
- 方法描述:通过 Java 8 的流操作,将
List
转换为数组。 - 优点:代码简洁,适用于 Java 8 及以上版本。
代码示例:
3. 注意事项
3.1 从数组到 List
- 使用
Arrays.asList()
时,生成的List
是固定大小的,不能增删元素。 - 如果需要一个可以动态修改大小的
List
,可以使用new ArrayList<>(Arrays.asList(array))
。
3.2 从 List
到数组
List
转换为数组时,目标数组的类型需要匹配List
元素的类型。- 推荐使用
list.toArray(new String[0])
,效率较高且易于理解。
4. 总结对比表
操作 | 方法 | 特点 |
---|---|---|
数组转 List |
Arrays.asList(array) |
固定大小的 List ,与原数组共享数据。 |
new ArrayList<>(Arrays.asList(array)) |
创建一个可变大小的 List ,与原数组无关。 |
|
Collections.addAll(list, array) |
添加数组到现有的 List 。 |
|
List 转数组 |
list.toArray(new String[0]) |
推荐方式,易用高效。 |
list.stream().toArray() |
使用 Java 8 流操作,简洁且现代化。 |