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()。

相关推荐
狼爷13 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路14 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白14 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
传奇开心果编程14 小时前
【Compose Multiplatform 跨端开发学与练】第7课 平台适配与互操作
android·windows·学习·ui·ios·kotlin·composer
工作10年+,存储芯片行业14 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
QCoding15 小时前
Spring AI Alibaba Graph实战:从ReAct Agent到Workflow,企业AI复杂流程该如何编排?
java·人工智能
用户0942485680315 小时前
第25章:Java虚拟线程(Project Loom)实战与调度协作
java·jvm
砚底藏山河15 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
wuminyu15 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
Elastic 中国社区官方博客15 小时前
使用 Lucene 搜索你的 Bean — 索引
java·大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene