Arrays.asList方法踩坑

Arrays.asList方法不会如期望地将基础类型的数组自动装箱并生成新的列表,如果想要将基础类型的数组自动装箱,可以考虑使用Guava包中提供的asList方法。如果确实需要创建只包含一个基础类型的数组为元素的列表,明确地使用Collections.singletonList方法来表达意图。List intArrayToInteger(int\[\] intArray) {

List <integer> List = Arrays.asList(intArray); // 编译错误,Arrays.asList方法返回值类型为List

return integerList;

}

List<Integer> intArrayToIntegerList2(int\[\] intArray) {

// 正确使用jdk自建的Arrays类

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

return integerList;

}

List<Integer> intArrayToIntegerList(int\[\] intArray) {

// 使用guava包中的com.google.common.primitives.Ints类

List<Integer> integerList = Ints.asList(intArray);

return integerList;

}

List<Integer> convertToIntArraySingleton(int\[\] intArray) {

// 如果确实需要创建只包含一个基础类型的数组为元素的列表,使用Collections.singletonList方法

List<int\[\]> intArraySingletonList = Collections.singletonList(intArray);

return intArraySingletonList;

}

尝试修改Arrays.asList方法返回的集合会抛出UnsupportedOperationException,这是由于Arrays.asList方法返回的集合是java.util.Arrays$ArrayList类,而非java.util.ArrayList类。

反例

void function(String\[\] strings) {

List<String> stringList = Arrays.asList(strings);

// 将会抛出UnsupportedOperationException

stringList.add("another string");

}

正例

void function(String\[\] strings) {

// 调用ArrayList的构建方法构建一个新的List

List<String> stringList = new ArrayList<>(Arrays.asList(strings));

stringList.add("another string");

}

相关推荐
leisoo80976 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
青瓦梦滋7 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
ltl7 小时前
机密计算:SGX、SEV-SNP、TDX 与 ARM CCA
linux
ltl7 小时前
互联与网络:NVLink、InfiniBand、RoCE 与国产替代
linux
码上上班7 小时前
tengine知识点
linux·服务器·centos
雾时之林10 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
sxstj14 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
RisunJan14 小时前
Linux命令-sshd(SSH 服务器守护进程)
linux·服务器·ssh
天疆说14 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
2401_8685347814 小时前
存储与虚拟化
linux·网络协议