当前位置: 首页 > news >正文

Java——踩坑Arrays.asList()

  1. 坑1:不能直接使用 Arrsys.asList() 来转换基本类型数据
public static void test1(){// 1、不能直接使用asList来转换基本类型数组int[] arr = {1, 2, 3};List list = Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(), list.get(0).getClass());}

输出结果:

list:[[I@27f8302d] size:1 class:class [I

原因:
查看源码可以看到,接收入参为泛型,而基本类型并没有集成Object

@SafeVarargs@SuppressWarnings("varargs")public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}

解决方法:
进行装箱或者直接使用包装类型

public static void test1(){// 1、不能直接使用asList来转换基本类型数组Integer[] arr = {1, 2, 3};List list = Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(), list.get(0).getClass());}
list:[1, 2, 3] size:3 class:class java.lang.Integer
  1. 坑2:Arrays.asList() 返回到List不支持增删操作
public static void test2(){String[] arr = {"1", "2", "3"};List list = Arrays.asList(arr);try {list.add("4");} catch (Exception e){e.printStackTrace();}System.out.printf("arr:%s, list:%s", Arrays.toString(arr), list);}

输出结果:
报了不支持的操作异常

java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.ooamo.test.AsListTest.test2(AsListTest.java:25)at com.ooamo.test.AsListTest.main(AsListTest.java:11)
arr:[1, 2, 3], list:[1, 2, 3]

原因:
查看源码可以看到,asList返回到ArrayList是一个内部类,继承了AbstractList,再查看源码,并没有是哪set,add,remove方法
请添加图片描述
请添加图片描述
解决方法:
asList之后new一个List给他

public static void test2(){String[] arr = {"1", "2", "3"};List list = new ArrayList(Arrays.asList(arr));try {list.add("4");} catch (Exception e){e.printStackTrace();}System.out.printf("arr:%s, list:%s", Arrays.toString(arr), list);}
  1. 坑3:对原数组的修改会影响 Arrays.asList() 返回的那个List
public static void test3(){String[] arr = {"1", "2", "3"};List list = Arrays.asList(arr);arr[0] = "0";System.out.printf("arr:%s, list:%s", Arrays.toString(arr), list);}

输出结果:

arr:[0, 2, 3], list:[0, 2, 3]

原因:
两者为同个引用
解决方法:
new一个新的List

public static void test3(){String[] arr = {"1", "2", "3"};List list = new ArrayList(Arrays.asList(arr));arr[0] = "0";System.out.printf("arr:%s, list:%s", Arrays.toString(arr), list);}
arr:[0, 2, 3], list:[1, 2, 3]

相关文章:

Java——踩坑Arrays.asList()

坑1&#xff1a;不能直接使用 Arrsys.asList() 来转换基本类型数据 public static void test1(){// 1、不能直接使用asList来转换基本类型数组int[] arr {1, 2, 3};List list Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(…...

前缀列表(ip-prefix)配置

一. 实验简介 本来前缀列表是要和访问控制列表放在一起讲的&#xff0c;但是这里单拎出来是为了更详细的讲解两者的区别 1.前缀列表针对IP比访问控制更加灵活。 2.前缀列表在后面被引用时是无法对数据包进行过滤的 实验拓扑 二. 实验目的 R4路由器中只引入子网LoopBack的…...

每日OJ_牛客_电话号码(简单哈希模拟)

目录 牛客_电话号码&#xff08;简单哈希模拟&#xff09; 解析代码 牛客_电话号码&#xff08;简单哈希模拟&#xff09; 电话号码__牛客网 解析代码 #include <iostream> #include <unordered_map> #include <set> #include <string> using name…...

鸿蒙轻内核M核源码分析系列十二 事件Event

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…...

基于 RocketMQ 的云原生 MQTT 消息引擎设计

作者&#xff1a;沁君 概述 随着智能家居、工业互联网和车联网的迅猛发展&#xff0c;面向 IoT&#xff08;物联网&#xff09;设备类的消息通讯需求正在经历前所未有的增长。在这样的背景下&#xff0c;高效和可靠的消息传输标准成为了枢纽。MQTT 协议作为新一代物联网场景中…...

AWVS/Acunetix Premium V24.8

前言 Acunetix Premium 是一款网络安全 漏洞扫描 工具&#xff0c;主要用于自动化网站漏洞扫描和管理。它的特点包括深度扫描和发现各种类型的漏洞&#xff08;如 SQL 注入和跨站脚本&#xff09;&#xff0c;支持多种技术和平台&#xff0c;提供详尽的报告和修复建议&#xf…...

[数据集][目标检测]灭火器检测数据集VOC+YOLO格式3255张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3255 标注数量(xml文件个数)&#xff1a;3255 标注数量(txt文件个数)&#xff1a;3255 标注…...

【技术警报】Redis故障启示录:当主节点宕机,如何避免数据“雪崩”?

在高并发的互联网世界中&#xff0c;Redis作为一个高性能的键值存储系统&#xff0c;常被用于缓存、消息队列等场景&#xff0c;为应用提速增效。然而&#xff0c;技术的光芒背后也隐藏着潜在的危机——今天&#xff0c;我们就来探讨一个真实发生的案例&#xff1a;Redis主节点…...

【基础】Three.js加载纹理贴图、加载外部gltf格式文件

1. 模型使用纹理贴图 const geometry new THREE.BoxGeometry(10, 10, 10);const textureLoader new THREE.TextureLoader(); // 创建纹理贴图加载器const texture textureLoader.load("/crate.gif"); // 加载纹理贴图const material new THREE.MeshLambertMater…...

【区块链 + 人才服务】FISCO BCOS 区块链实训和管理平台 | FISCO BCOS应用案例

中博数科 FISCO BCOS 区块链实训和管理平台主要应用于区块链领域的教育和实训&#xff0c;目的是为学生、教师等用户 提供高效的区块链技术学习和实践体验&#xff0c;同时也为学校提供了一套完整的区块链解决方案。 该平台提供了一套完整的区块链课程体系&#xff0c;包括理论…...

联众优车持续加大汽车金融服务投入与创新,赋能汽车消费新生态

近年来&#xff0c;中国汽车消费市场呈现出蓬勃发展的态势&#xff0c;而汽车金融服务作为降低购车门槛、优化购车体验的重要手段&#xff0c;正日益受到市场的青睐。《2023中国汽车消费趋势调查报告》显示&#xff0c;相较于前一年&#xff0c;今年选择汽车金融服务的市场消费…...

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用&#xff0c;旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法&#xff0c;该算法是深度学习领域中的先进目标检测模型&#xff0c;具备实时检测和多目标识别的…...

PHP轻量级高性能HTTP服务框架 - webman

摘要 webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构&#xff0c;提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站&#xff0c;也可以开发 HTTP 接口或者微服务。 除此之外&#xff0c;webman 还支持自定义进程&am…...

Python实现人工鱼群算法

博客目录 引言 什么是人工鱼群算法&#xff08;AFSA&#xff09;&#xff1f;人工鱼群算法的应用场景为什么使用人工鱼群算法&#xff1f; 人工鱼群算法的原理 人工鱼群算法的基本概念人工鱼的三种行为模式人工鱼群算法的流程人工鱼群算法的特点与优势 人工鱼群算法的实现步骤…...

【网络安全】密码学概述

1. 密码学概述 1.1 定义与目的 密码学是一门研究信息加密和解密技术的科学&#xff0c;其核心目的是确保信息在传输和存储过程中的安全性。密码学通过加密算法将原始信息&#xff08;明文&#xff09;转换成难以解读的形式&#xff08;密文&#xff09;&#xff0c;只有拥有正…...

Java连接SSH

使用JSch库建立SSH连接 JSch是一个纯Java实现的SSH2库&#xff0c;可以用来建立安全的SSH连接。要使用JSch&#xff0c;首先需要将其依赖项添加到您的项目中。如果您使用Maven作为构建工具&#xff0c;可以在pom.xml文件中添加如下依赖&#xff1a; <dependency><gr…...

怎么取消MAC 输入首字母总是自动变大写

一、打开系统偏好设置 点击屏幕左上角的苹果图标&#xff08;&#xff09;。 在弹出的菜单中选择“系统偏好设置”。偏好设置”。二、进入键盘设置 在系统偏好设置窗口中&#xff0c;找到并点击“键盘”选项。三、调整文本输入设置 在键盘设置窗口中&#xff0c;点击“文本…...

【无损检测】基于用深度学习的工业超声B-Scan 图像中的焊缝缺陷

Automated Weld Defect Detection in Industrial Ultrasonic B-Scan Images Using Deep Learning Abstract: 自动超声波检测&#xff08;AUT&#xff09;是一种无损检测&#xff08;NDT&#xff09;方法&#xff0c;广泛应用于具有重要经济意义的行业。为了确保对独有的 AUT 数…...

iOS——GCD再学习

GCD 使用GCD好处&#xff0c;具体如下&#xff1a; GCD 可用于多核的并行运算&#xff1b;GCD 会自动利用更多的 CPU 内核&#xff08;比如双核、四核&#xff09;&#xff1b;GCD 会自动管理线程的生命周期&#xff08;创建线程、调度任务、销毁线程&#xff09;&#xff1b…...

SVD降维

文章目录 一、SVD降维的基本原理二、SVD降维的步骤三、SVD降维的优点四、SVD降维的应用五、代码应用六、SVD降维的局限性 一、SVD降维的基本原理 SVD是线性代数中的一种技术&#xff0c;它将一个矩阵A分解为三个矩阵的乘积&#xff1a;A UΣV^T。其中&#xff0c;U和V是正交矩…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...