一、数组转换成 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、使用第三方工具,比如 Apache
的 commons-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
的流式编程比较简单方便,不需要引入其它依赖,所以比较推荐。