一、数组转换成 List 集合

1、使用 java.util 包下的 Arrays.asList 方法进行转换:

import java.util.Arrays; // 转换数组对象 Long[] arr = new Long[]{10L, 20L, 30L}; List<Long> list1 = Arrays.asList(arr); // 转换数组常量 List<String> list2 = Arrays.asList("123", "456", "789");

2、原始类型数组转包装类 List

long[] arr = new long[]{10L, 20L, 30L}; List<Long> list = Arrays.stream(arr).boxed().collect(Collectors.toList());



二、List 集合转数组

1、使用 List 集合的 toArray 方法:

// 方式1(推荐) List<Long> list = Arrays.asList(10L, 20L, 30L); Long[] array = list.toArray(new Long[0]); // 方式2 List<String> list = Arrays.asList("123", "456", "789"); String[] array = (String[]) list.toArray();

2、使用 Java8 流式编程方式:

// 方式1(推荐) List<Long> list = Arrays.asList(10L, 20L, 30L); Long[] array = list.stream().map(Long::valueOf).toArray(Long[]::new); // 方式2 List<String> list = Arrays.asList("123", "456", "789"); Long[] array = (Long[]) list.stream().map(Long::valueOf).toArray();

如果转换的数组类型为原始基本类型(double[], long[], int[])的话,可以使用另一个映射方法(这几个方法已经帮我们转换成了原始基本类型):

double[] doubles = list.stream().mapToDouble(Double::new).toArray(); long[] longs = list.stream().mapToLong(Long::new).toArray(); int[] ints = list.stream().mapToInt(Integer::new).toArray();

3、使用第三方工具,比如 Apachecommons-beanutils 工具包:

<!-- 引入依赖 --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version> </dependency>
import org.apache.commons.beanutils.ConvertUtils; List<String> list = Arrays.asList("123", "456", "789"); String[] array = (String[]) ConvertUtils.convert(list, String[].class);

总结:使用第三方工具包的方式通过性比较强,它可以转换任何类型,但使用 List 集合的 toArray 方法和 Java8 的流式编程比较简单方便,不需要引入其它依赖,所以比较推荐。