在Java开发中,我们经常会遇到需要在集合(Collection)和数组(Array)之间进行转换的场景。无论是将一个List转换成数组用于方法参数传递,还是将数组转换为List以便使用集合的强大功能,掌握这些转换技巧都至关重要。
本教程将详细讲解如何实现Java集合转数组和数组转集合,涵盖常见用法、注意事项以及最佳实践。即使你是编程小白,也能轻松上手!

Java中的集合类(如ArrayList、LinkedList等)提供了toArray()方法,可以将集合转换为数组。
该方法返回一个Object[]类型的数组:
import java.util.*;public class CollectionToArrayExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Cherry"); // 转换为 Object[] Object[] array = list.toArray(); for (Object obj : array) { System.out.println(obj); } }}⚠️ 注意:这种方式返回的是Object[],不能直接强转为具体类型数组(如String[]),否则会抛出ClassCastException。
这是更安全、类型安全的方式,可以返回指定类型的数组:
import java.util.*;public class SafeCollectionToArray { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "Python", "C++"); // 方式1:传入空数组(推荐) String[] array1 = list.toArray(new String[0]); // 方式2:传入与集合大小相同的数组 String[] array2 = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(array1)); // [Java, Python, C++] System.out.println(Arrays.toString(array2)); // [Java, Python, C++] }}✅ 最佳实践:使用list.toArray(new String[0])。现代JVM对此做了优化,性能优于传入预分配大小的数组。
将数组转换为集合有多种方式,下面介绍最常用的方法。
import java.util.*;public class ArrayToCollection { public static void main(String[] args) { String[] fruits = {"Orange", "Grape", "Mango"}; // 转换为 List List<String> fruitList = Arrays.asList(fruits); System.out.println(fruitList); // [Orange, Grape, Mango] // ⚠️ 注意:这个List是固定大小的! // fruitList.add("Peach"); // 会抛出 UnsupportedOperationException }}⚠️ 重要提示:Arrays.asList()返回的是一个固定大小的列表,不支持add()、remove()等修改操作。
import java.util.*;public class MutableArrayToList { public static void main(String[] args) { Integer[] numbers = {1, 2, 3, 4, 5}; // 创建一个新的可变 ArrayList List<Integer> numberList = new ArrayList<>(Arrays.asList(numbers)); numberList.add(6); // ✅ 可以正常添加 System.out.println(numberList); // [1, 2, 3, 4, 5, 6] }}由于泛型不支持基本类型,int[]不能直接用Arrays.asList()转换。需要先转换为包装类型数组:
import java.util.*;import java.util.stream.Collectors;public class PrimitiveArrayToList { public static void main(String[] args) { int[] primitiveArray = {10, 20, 30}; // 使用 Stream 转换(Java 8+) List<Integer> list = Arrays.stream(primitiveArray) .boxed() .collect(Collectors.toList()); System.out.println(list); // [10, 20, 30] }}list.toArray(new String[list.size()])不如list.toArray(new String[0])高效?new T[0]做了特殊优化,内部会直接创建合适大小的新数组,避免了不必要的数组复制。通过本教程,你已经学会了:
toArray(new T[0]))new ArrayList<>(Arrays.asList(...)))boxed()方法)无论你是初学者还是有一定经验的开发者,掌握这些Java集合转数组和数组转集合的技巧,都能让你的代码更加健壮和高效!
快去试试吧!如有疑问,欢迎在评论区留言交流~
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025127932.html