Java中将 int[] 数组 转换为 List(ArrayList)
2024-10-21 03:18:35
前言
说起数组转换成 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的本质就是迭代器,写法更加简洁。
这里代码就做展示了。
最新文章
- Titanium.UI.createAlertDialog
- junit学习笔记
- php多进程
- DHTMLX-Windows
- Linux vim编辑命令
- MMORPG大型游戏设计与开发(客户端架构 part4 of vegine)
- C#中的Infinity有个小坑
- asp.net froms 移动平台(iphone 微信)无法存储的解决办法。
- 《第一行代码--Android》阅读笔记之Activity
- 【译】C++工程师需要掌握的10个C++11特性
- javascript系列之DOM(一)
- 串string (KMP)
- NYOJ15-括号匹配(二)-区间DP
- Java内存区域划分、内存分配原理(转)
- 用crash来分析一下proc的文件访问
- Beanstalkd消息队列的安装与使用
- Ethernet II和802.3
- C# 移动及限制移动距离
- WorldWind源码剖析系列:枚举类型
- mybatis源码-解析配置文件(一)之XML的DOM解析方式
热门文章
- Logstash:导入zipcode CSV文件和Geo Search体验
- FastDFS与nginx配置使用的配置信息
- 基于python的MD5脚本
- PAT (Basic Level) Practice 1020 月饼 分数 25
- PAT (Basic Level) Practice 1002 写出这个数 分数 20
- QML 信号与响应方法的总结
- P5657 [CSP-S2019] 格雷码 (找规律)
- python实现给定K个字符数组,从这k个字符数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合结果!
- C语言经典编程100题
- Windows7下驱动开发与调试体系构建——5.实战反调试标记位(NtGlobalFlag)