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());
Tip:关于 Arrays.asList
方法的一些注意点可以参考我的另一篇博客:【Java编程】之浅谈 Arrays.asList 和 ArrayList 的 subList
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、使用第三方工具,比如 Apache 的 commons-beanutils
工具包:
<dependency>
<groupId>commons-beanutilsgroupId>
<artifactId>commons-beanutilsartifactId>
<version>1.9.4version>
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 的流式编程比较简单方便,不需要引入其它依赖,所以比较推荐。