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

相关推荐
2501_9445215911 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理12 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu11413 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck14 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir14 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人14 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_9445215915 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying883815 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
LannyChung16 小时前
PowerShell 下 git log 中文乱码的完整排查与解决
windows·git
@大迁世界16 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust