Java中List和数组转换的使用

本文揭示了数组转List的常见误区,如Arrays.asList的类型限制和功能局限,并推荐使用Java 8流转换。同时,讨论了List转数组的注意事项,特别是基本类型数组的处理。通过实例讲解,提升代码健壮性,避免生产事故。
摘要由CSDN通过智能技术生成

关于数组和List的互相转换,大家都是耳熟能详了,毕竟是经典八股文之一。
但是这里还是再次强调一些事项吧

数组转List

经典八股文,脱口而出的答案就是Arrays.asList()。
但是我不推荐,两个理由:

①对于数组的类型有要求。

这也是为什么在网上搜数组转List的示例都是如:String[] strings = {“aa”,“bb”,“cc”}
这种了。如果用int这种基本类型的数组呢:
在这里插入图片描述

答案是不行。必须用Integer[],Double[]这种装箱后的类型,或者说必须引用类型。
如果是方法限定了传的参数数组是基本类型,如 int[] ,就完全不能用Arrays.asList()。我刷算法题的时候就特别烦这限制。所以忘记这种转换方法吧,坑。

②Arrays.asList()的缺陷

使用Arrays.asList()转换为List后,只能够进行查询和修改,不能够增加和删除,如果使用list.add(),将报如下错:
在这里插入图片描述

太鸡肋了,如果是新手写的程序,这问题可能会被携带上线,造成生产事故的。

报错原因:

Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错。

推荐的写法:

使用Java8的stream流,一行代码转换:

List<String> strings = Stream.of(strings).collect(Collectors.toList());

当然,这种写法也是需要是引用类型。int[] 这种是不行的,这就只能乖乖写for循环了。

好处就是这种代码是可以进行增删改查的,不至于会由于疏忽导致出现bug。


List转数组

经典八股文,脱口而出的答案就是list.toArray()。
真是这样吗?是的:

Integer[] arr = new Integer[list.size()];
list.toArray(arr);

这样也是一样限定了是引用类型,也就是必须Integer[],Double[]这种.
对int[],double[]这些基本数据类型,还是乖乖写for循环吧。

如果有误,谢请指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三七有脾气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值