Java 实例 - 基本类型int、long、double数组转化成List简便的方法

1. 方式一(最简单方式)

循环遍历

int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<>() ;
for(int i = 0; i < ints.length; ++i) {
    intList.add(ints[i]) ;
}
intList.forEach(System.out::println);

//输出结果
1
2
3

调用 Arrays 类的静态方法 asList()

List<String> strings = Arrays.asList(new String[]{"123", "456"});
System.out.println("strings="+strings);
List<int[]> ints = Arrays.asList(new int[]{123, 456});
System.out.println("ints="+ints);

//输出结果
strings=[123, 456]
ints=[[I@4e515669]

这种写法有一点需要注意:基本类型>>集合,会把基本类型的数组当成一个整体结构(一个元素)存到集合中;

包装类>>集合,就不会出现基本类型转换成集合的这种情况

2. 方法二(Java 8 新特性)

使用 Java 8 的新特性,使用 Stream 流 进行转换;

想了解 Stream API 的使用可以看这篇文章 Stream APILambda 表达式详解

示例

//1.创建int数组
int[] ints = {1, 2, 3};
//2.调用 Arrays 类的静态方法 Stream() 把 ints 数组对象转换成流,这里要注意需要使用 boxed() 方法把IntStream 流转化成 Stream 流,因为转化成 Stream 流之后才能调用 collect() 收集方法获得List
List<Integer> intList = Arrays.stream(ints).boxed().collect(Collectors.toList());
//3.最后打印输出,这里使用到了 Lambda 表达式和方法引用
intList.forEach(System.out::println);

//输出结果
1
2
3

示例中调用 boxed() 方法的原因:

在这里插入图片描述

调用 Arrays 类的静态方法 stream ,如果传入一个int数组的话,调用的是一个重构方法,返回的是一个 IntStream 流对象,而如果想调用 collect() 收集方法获得List,就必须把 IntStream 流对象转换成 Stream<Integer> 对象,所以 boxed() 方法就起到了这个转换作用。
在这里插入图片描述

同样 long、double数组也是这样操作:

示例

long[] longs = {1L, 2L, 3L};
double[] doubles = {1.23, 2.23, 3.23};
List<Long> longList = Arrays.stream(longs).boxed().collect(Collectors.toList()) ;
List<Double> doubleList = Arrays.stream(doubles).boxed().collect(Collectors.toList());
longList.forEach(System.out::println);
doubleList.forEach(System.out::println);

int、long、double 都属于基本类型,String 数组转成 List,就不需要使用 boxed() 方法

String 不属于基本类型,所以调用 Arrays 类的静态方法 stream 返回的就是 Stream 对象

示例

String[] strings = {"666" , "888" , "999"} ;
List<String> stringList = Arrays.stream(strings).collect(Collectors.toList());
stringList.forEach(System.out::println);

//输出结果
666
888
999

在这里插入图片描述

3. 方式三(引入Jar包)

/**
 * int[]转Integer[]再转List
 * 方法三:需要导入apache commons-lang3  jar
 * <dependency>
 *   <groupId>org.apache.commons</groupId>
 *   <artifactId>commons-lang3</artifactId>
 *   <version>3.10</version>
 * </dependency>
 */
int[] ints = {1, 2, 3};
//int[]转Integer[]
Integer[] integers = ArrayUtils.toObject(ints);
//Integer[]再转List
List<Integer> integerList = Arrays.asList(integers);
//输出integerList
integerList.forEach(System.out::println);
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值