Java:Java 数组转 List

Java 数组转 List 需区分‌引用类型数组‌(如 String\[\]、Integer\[\])与‌基本类型数组‌(如 int\[\]),且必须明确是否需要‌可变操作‌(add/remove)。

一、引用类型数组(T\[\] → List<T>)

⚠️ 注意:Arrays.asList(int\[\]) 会将整个 int\[\] 视为‌单个元素‌,返回 List<int\[\]>(size=1),‌不是‌ List<Integer>。

二、基本类型数组(如 int\[\] → List<Integer>)

‌Java 8+ 标准方式‌(自动装箱,返回可变 List):

java

List<Integer> list = Arrays.stream(intArray).boxed().collect(Collectors.toList());

支持 int\[\]、long\[\]、double\[\];其他基本类型需手动循环或先转包装类数组。

JDK 9+ 中 Collectors.toList() 不保证返回 ArrayList,若需明确可变性可再包一层:

new ArrayList<>(Arrays.stream(...).boxed().collect(Collectors.toList()))

‌第三方库替代‌(需引入依赖):

Guava:new ArrayList<>(Ints.asList(intArray))(仍不可变,需二次包装)

FastUtil:IntArrayList.wrap(intArray)(零拷贝,但非标准 java.util.List)

三、常见错误规避

❌ Arrays.asList(new int\[\]{1,2,3}) → 得到 List<int\[\]>(size=1)

❌ 直接对 Arrays.asList() 结果调用 add() → 运行时异常

✅ 原则:‌只要后续可能修改列表,务必用 new ArrayList<>(...) 包裹‌

注:List.of()(Java 9+)返回不可变列表,不适合需动态操作的场景;基本类型数组不能直接传入 List.of()。

相关推荐
工业一体机老司机22 分钟前
Python实现工业一体机OPC-UA通信:从SDK选型到数据采集实战
开发语言·python·单片机
IT爱学堂25 分钟前
QT原理与源码分析可以学到什么 QT视频课程 QT课程推荐 最新推荐
开发语言·qt
wuyk55526 分钟前
Python 零基础入门第七章:字典 Dict
开发语言·python
躺着听Jay27 分钟前
QT交叉编译
开发语言·qt
2601_9669496528 分钟前
如何判断盘中最新价相对昨日收盘涨跌幅,并实时触发止盈止损条件单:QuantDash Python 实战
开发语言·python·量化策略·量化·quantdash
下辈子不要当码农35 分钟前
Day7-Linux软件编程(进程与线程(3))
java·开发语言
深入云栈1 小时前
一文搞懂Netty 4.2六大核心概念:Channel/EventLoop/Selector/ByteBuf 如何关联
java·后端
Ai老司机1 小时前
Windows 本地文件搜索为什么快?本地索引加速定位的原理
windows
hh9501 小时前
Agent Plan × DeepSeek Harness:角色 Prompt 驱动的 Agent 分工优化与协作质量实验
java·前端·人工智能·prompt·adg·agent plan·adg成都社区