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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值