【Java编程】之 List 与数组之间的相互转换

目录

  • 一、数组转换成 List 集合
  • 二、List 集合转数组

一、数组转换成 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());

Tip:关于 Arrays.asList 方法的一些注意点可以参考我的另一篇博客:【Java编程】之浅谈 Arrays.asList 和 ArrayList 的 subList


二、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-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 的流式编程比较简单方便,不需要引入其它依赖,所以比较推荐。

你可能感兴趣的:(Java,java)