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

相关推荐
野生技术架构师1 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
香吧香2 小时前
java服务异常日志只打印异常类型,没有堆栈定位分析
java·jvm·异常
qq_2518364572 小时前
AI 疾病自查功能SpringbootAI项目实战 · 技术实现文档
java·ai·ai编程
YCOSA20253 小时前
雨晨 Windows 10 企业版 LTSC x64 中度精简 1809 迎双节 17763.9257 特别版
windows
逆境不可逃3 小时前
Pi Agent 学习笔记:对话太长以后,如何压缩上下文
java
MetaLite3 小时前
JDK 8~26 核心特性一览:从 Stream 到 Scoped Values
java
sukalot3 小时前
windows 驱动实例分析系列: HidHide 驱动分析 - drivers 篇(四)
windows·驱动开发
wno7043 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
君顾13 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
香菜TTT4 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享