Java 中集合转数组的方法

Java 中集合转数组的方法

在 Java 中,将集合(如 List、Set)转换为数组有几种常见方法:

1. 使用 toArray() 方法(无参)

List list = Arrays.asList("a", "b", "c");
Object[] array = list.toArray(); // 返回 Object[] 数组

特点
• 返回的是 Object[] 数组
• 无法直接转换为特定类型的数组

2. 使用 toArray(T[] a) 方法(推荐)

List list = Arrays.asList("a", "b", "c");

// 方式1:传入大小合适的数组
String[] array1 = list.toArray(new String[list.size()]);

// 方式2:传入空数组(Java 11+推荐)
String[] array2 = list.toArray(new String[0]);

特点
• 可以指定返回的数组类型
• Java 11+ 推荐使用 toArray(new T[0]),性能更好
• 如果传入的数组大小不足,会自动创建新数组

3. 使用 Java 8 Stream API

List list = Arrays.asList("a", "b", "c");
String[] array = list.stream().toArray(String[]::new);

特点
• 代码简洁
• 适用于 Java 8 及以上版本

4. 手动遍历转换

List list = Arrays.asList("a", "b", "c");
String[] array = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
    array[i] = list.get(i);
}

特点
• 适用于需要特殊处理的场景
• 代码量较多

性能比较

方法

适用场景

性能

toArray()

只需要 Object[] 时

toArray(new T[size])

已知集合大小时

toArray(new T[0])

Java 11+ 通用方案

快(优化后)

Stream API

Java 8+ 简洁代码

中等

手动遍历

需要特殊处理时

最佳实践

  1. Java 11+:优先使用 collection.toArray(new T[0])
  2. Java 8:可以使用 Stream API 或 toArray(new T[size])
  3. 兼容性要求高:使用 toArray(new T[size])

注意事项

• 基本类型集合(如 List)转换为基本类型数组需要额外处理
• 转换后的数组是独立的副本,修改不会影响原集合(除非使用 Arrays.asList() 包装的列表)

示例(基本类型处理):

List list = Arrays.asList(1, 2, 3);
int[] intArray = list.stream().mapToInt(Integer::intValue).toArray();

你可能感兴趣的:(知识杂记,开发语言,java,笔记)