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");

}

相关推荐
野指针YZZ1 小时前
Gstreamer插入第三方plugins流程:rgaconvert
linux·音视频·rk3588
济6171 小时前
ARM Linux 驱动开发篇--- pinctrl 子系统详解-- Ubuntu20.04
linux·嵌入式·嵌入式linux驱动开发
云飞云共享云桌面1 小时前
10人SolidWorks设计团队如何提升SolidWorks软件利用率
大数据·linux·运维·服务器·网络·人工智能
czxyvX4 小时前
019-Linux-Socket编程-TCP
linux·tcp/ip
A.A呐10 小时前
【Linux第六章】进程状态和优先级
linux
iambooo11 小时前
Shell在日志分析与故障排查中的实战应用
linux·服务器·网络
一路往蓝-Anbo11 小时前
第 9 章:Linux 设备树 (DTS) ——屏蔽与独占外设
linux·运维·服务器·人工智能·stm32·嵌入式硬件
钛态12 小时前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos
王码码203512 小时前
Flutter for OpenHarmony:Flutter 三方库 bluez 玩转 Linux 风格的蓝牙操作(蓝牙底层互操作)
linux·运维·服务器·前端·flutter·云原生·harmonyos