Java中将 int[] 数组 转换为 List(ArrayList)
2023-03-20 15:23:22 时间
前言
说起数组转换成 ArrayList,很多同学第一反应就是遍历数组,将元素逐个添加到 ArrayList 中,但是这个看着就lower,一般不会这么答。
所以马上就会想到Arrays工具类的 asList 方法,如果你这么答,那么恭喜你,答错入坑。
为什么不能用 Arrays 的 asList 方法将 int[] 装换成 ArrayList
如果此处数组 int[] 换作是 Integer[] 或者任何一个引用类型元素的数组都正确,Arrays 的 asList 方法只能转换引用类型元素的数组。
asList 方法的源码就是这么定义的:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
注意:Arrays.asList(T... a)返回的List中元素是不可变的。
从源码可以看出Arrays.asList(T... a)返回的是一个ArrayList,但是这个ArrayList是Arrays的内部类,不是我们集合框架下的那个ArrayList。
使用stream进行转换(jdk8 推荐)
jdk版本低于1.8不可以使用。
数组通过 Arrays 工具类的 stream() 方法进行流化,获取 Stream 对象。boxed()方法是用来装箱的。
int[] arys = {1,2,3};
List<Integer> list = Arrays.stream(arys).boxed().collect(Collectors.toList());
要转化为ArrayList还需要进行一次强制类型转化
遍历数组,逐个加入元素到List中
可以使用for、增强for循环、迭代器。
使用for循环遍历数组,性能稍微好那么一丢丢。增强for的本质就是迭代器,写法更加简洁。
这里代码就做展示了。
相关文章
- 深入探讨Java中的异常与错误处理
- 研究学习Kotlin的一些方法
- 数据显示Java热度持续下落,日子屈指可数?
- 2017年5月编程语言排行榜:Java与C语言优势正开始缩小
- Java多线程之内置锁与显示锁
- Java线程池的理论与实践
- 白话阿里巴巴Java开发手册(编程规约)
- 关于Java你不知道的十件事
- Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令
- Java实现高斯模糊和图像的空间卷积
- Java阻塞队列实现原理分析
- NPM使用技巧
- Node.js对Java开发者而言是什么?
- Java反射机制应用实践
- 理解RxJava中的Single和Completable
- 2017年你不能错过的Java类库
- 大规模集群下的Hadoop NameNode
- 从源码解密Spark内存管理
- 2017年3月编程语言排行榜:Swift首次进入前十
- JVM热点技术:Java类的加载机制