浅复制与深复制-集合储存的引用

java后端开发面试题总结(一) 文章目录1.JDK和JRE及JVM有什么区别?2.常用数字类型的区别?3.面向对象的三大特征是什么?4.接口和抽象类的异同?5.静态变量和实例变量(方法)的区别?6.类的执行顺序?7.说明java的异常体系:8.String与字符串常量池:9.String,StringBuilder,StringBuffer的区别:10.List和Set的区别:11.ArrayList,LinkedList的不同:12.HashSet,TreeSet的区别?13.Object类hashCode()和equals()的区别1 阅读详情
发现问题

今天看一个面试题的时候发现了浅复制与深复制的这个问题,题是这样的:

  1. 首先定义一个自定义类型,其中该类型的一个字段为id,然后为该字段赋值id=1。
  2. 接着定义两个ArrayList,把该类分别放入这两个list中。
  3. 修改其中的list的一个id=2,那么另外一个list的id会变么?
分析问题
  1. 按照正常的思维肯定是不会变的呀,因为修改的是其中一个ArrayList中对象的值,为什么另外一个的也会改变呢?可是运行出来的结果发现两个都变成了2.
  2. 这就涉及到了要聊的浅复制与深复制,因为当定义该Class的时候Java虚拟机会在内存中开辟一块空间存放id为1的对象。其中放入到两个list中的是对于该地址的引用。
  3. 所以当获取到该引用修改对象时候,改变的是内存地址中的值。两个list里面的引用是没变的。
解决问题
  1. 那么如何解决这样的问题呢,我们可以使用clone()方法来解决。定义好第一个Class的对象之后,调用clone()方法来赋值给第二个对象。
  2. 这样会在内存空间中再开辟一片空间给第二个对象,再次分别放入list1和list2中,修改list1中的id值,并不会影响到list2中的id值。
Backtrader Web:开源量化交易全栈平台 Backtrader Web是一个基于Backtrader框架的现代化量化交易全栈平台,将专业回测引擎与Web技术结合,提供从策略开发到实盘交易的完整解决方案。平台采用FastAPI+Vue3技术栈,具有118个内置策略模板、专业可视化分析工具和完整的策略生命周期管理功能。支持策略版本控制、参数优化、模拟/实盘交易及监控告警,通过RESTful API和WebSocket实现前后端交互。系统采用模块化设计,包含策略服务、回测服务等核心模块,支持SQLite/PostgreSQL等多种数据库。安装简单,5分钟 阅读详情

相关推荐

基于集成运放心电放大器设计(原创)

原创作者:einyboy or alert 最近在看美剧《危机边缘》关于边缘科学的案件,科技控可以看一下,但建议不在吃东西的时候看。想像力是创造的思想源头,动手能力则是创造的车床。 自认为是没有想像力的那类,只能发挥动手能力了。 心电测量简介 图1 心电极接线图 如图1心电测试一般使用3个心电极进行测量,各个电极的说明如下: RA: Right Arm缩写,右手电极 LA: L...

huandaohack的专栏 6924

java集合数据复制到另外一个集合

文章目录Lsit中数据复制问题1.1copy问题1.2怎么高效的复制1.3 回答 Lsit中数据复制问题 这是由一道开放式面试题引发的文章,题目:加入内存足够大,一个集合中有100万条数据,怎么高效的把集合中的数据复制到另外一个集合 1.1copy问题 java 中复制分为浅拷贝和深拷贝 如果考察浅拷贝:直接使用clone方法 System.out.println("测试开始时");...

keep_learn的专栏 2万+

Python地理空间库安装指南:从gdal到geopandas的完整流程

本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。

weixin_29091105的博客 462

怎么把一个集合的数据复制到另一个集合 不是引用传递(地址传递)

Collection c1 Collection c2 c1.addAll(c2);

qq_36291682的博客 7268

如何在VSCode中无缝集成Azure OpenAI GPT-5-codex?保姆级配置教程

本文详细介绍了在VSCode中无缝集成Azure OpenAI GPT-5-codex的完整配置教程,涵盖环境准备、Azure资源创建、本地配置、VSCode插件安装及高级定制。通过Codex CLI和config.toml文件配置,开发者可快速实现AI辅助编程,大幅提升代码生成、错误诊断和文档编写效率。

weixin_29268637的博客 555

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 633

list 集合复制总结

方法一:       List l = new ArrayList();         l.add("a");         l.add("b");         l.add("c");        List l2 = new ArrayList(l);         l2.add("d");        System.out.println(l2);        System.ou...

嗯哼的博客 1万+

VS2019配置Qt5.14.2开发环境全流程(含MSVC2017 64-bit选择指南)

本文详细介绍了在VS2019中配置Qt5.14.2开发环境的完整流程,特别针对MSVC2017 64-bit编译器的选择提供了专业建议。从环境准备、Qt安装配置到VS2019集成设置,逐步指导开发者完成开发环境的搭建,并提供了常见问题的解决方案和高级优化技巧,帮助开发者高效进行Qt开发。

weixin_29243279的博客 512

python 对象引用、可变性、浅复制深复制

参考《流畅的python》第8章 变量是盒子 变量是附加在对象上的标注。 1. 每个变量都有标识、类型和值。 可以把标识理解为对象在内存中的地址。对象一旦创建,它的标识绝不会变。 2. is运算符 和 == is 运算符比较两个对象的标识;id() 函数返回对象标识的整数表示。对象 ID 的真正意义在不同的实现中有所不同。在 CPython 中,id() 返回对象的内存地址,但是在其他 Python 解释器中可能是别的值。关键是,ID 一定是唯一的数值标注,而且在对象的生命周期中绝不会变。 == 运算符

weixin_43975801的博客 355

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 391

基于知识图谱的智能决策系统

作者:禅与计算机程序设计艺术 1.简介 知识图谱(Knowledge Graph)最早由美国斯坦福大学的Jure Sifne等人于2013年提出,它是一个用于存储、整理和推理复杂多变的网络结构信息的数据模型。它的基本特征是每个事实都有一个统一的标识符ID,并且可以以图形的方式展示各种关系及其边缘。因此,

AI天才研究院 2184

Python日记5--列表

1.列表  与Java中的*集合*性质相同,用于储存一组数据. 格式: 列表名=[元素1,元素2,元素3,元素4,...]; A:列表元素获取  方式一: 列表名[索引]    方式二(切片):列表名[索引1:索引2] PS:此方式包左不包右,用冒号分开   方式二举例:name=["Harry","Smith","Lily","OnionKnight"]    

a1055679698的博客 229

最新2026年《网络数据安全风险评估办法》条款解读

大型企业集团IT变革下的零信任安全体系建设方案(55页).pptx。以数据安全为核心的安全立体防御体系解决方案(41页).pptx。让数据安全合规地创造价值(15页 PPT).pptx。大型集团数据安全应急预案(57页).docx。数据安全治理与评估服务业务介绍.pptx。数据安全管理实践(17页).pptx。大数据安全架构设计方案.pptx。大数据安全规划总体方案.pptx。数据库安全综合治理方案.pptx。医疗数据安全建设方案.pptx。数据安全框架规划图.pptx。数据安全治理方案.pptx。

cdfunlove的博客 47

python函数方法里面用浅复制深复制_父对象、子对象以及直接赋值、浅拷贝(copy)、深拷贝(deepcopy)...

python中数据存储和C中区别:Python中:a=2b=aa=3该过程中的内存储存方式为:1、先再内存中开栈存储2这个数据的空间2、a指向数据为2的内存空间地址3、b=a 此时b指向2的内存空间的地址4、a=3 内存中开栈存储3这个数据的空间5、此时a=3中,a重新指向数据为3的内存地址总结:Python是动态语言,变量只是对象的引用,不同于C中将值赋给变量(j将值存放到变量代表的内存空间中)...

weixin_28729843的博客 611

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

列表笔记大纲

列表总体概述 列表是有序的,支持双向索引 列表包括整个Python基于值的自动内存管理模式,变量储存值的引用 尽量避免从列表的中间进行插入和删除操作 列表的创建与删除 创建列表 第一种,=直接赋值,a_List=['a','c','s',,5,[4]] 列表中的元素可以是任意类型的 第二种 ,采用list()方法,可以把range对象,字符串,元组,字典,集合或其他可迭代对象转化为列表,注意,转化字典时,默认转化字典中的“键”,要想转化其他,可使用.items()方法加以说明,代码如下: >>

m0_54246037的博客 147

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

GOF 设计模式 原型模式 笔记

原型模式 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 在以下情况下可以使用Prototype模式: 当一个系统应该独立于他的产品创建,构成和表示时 当要实例化的类是在运行时指定时,例如,通过动态装载 为了避免创建一个与产品类层次平行的工厂类层次时 当一个类的实例只能有几个不同状态组合的一种时,建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类方便些。 结构 对于应用如果只需要频繁创建几个不同状态的产品时,选择克隆原型可能要比创建新对象效率要高。 但是对于每一种

zjj_daniu的博客 194

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【无标题】

java基础面试题

weixin_72727863的博客 472

自检清单(javascript)

变量和类型 Javascript规定了几种语言类型 数据类型一般分为七种:Number String Boolean null undefined Object Symbol 基本类型:Number String Boolean null undefined 引用类型:Object Date Array RegExp FunctionString:并非字符串,而是字符串的UTF16编码N...

qq_35415374的博客 423

pytorch中的深拷贝与浅拷贝

在 Python 中,一切皆为对象,python中有可变对象与不可变对象,Python 中不存在值传递,python中所有变量都是引用,也可以认为是传址。每个变量名都是标签,他们不直接储存数据。可以使用id函数来查看变量id,id相同的变量指代同一内容。不可变对象:字符串、元组、数字(int、float)可变对象:数组、字典、集合可变对象可以被修改,对可变变量的copy有浅拷贝和深拷贝,函数传参如果传的是可变变量,那么传入的参数是浅拷贝,改变该参数,外部参数值也会变化。

qq_38835475的博客 1600

C++ 面向对象归纳总结

C++面向对象如何理解: 将具有相似特征的实体集合起来形成类;将类实例化形成对象;面向对象,使计算机软件系统与现实世界系统一一对应起来。 C++的三大特性:封装、继承、多态 类对象所占空间 http://www.cnblogs.com/weiyouqing/p/9642986.html 空类必须占一个字节; 函数指针不占字节; 虚函数根据编译器位数,占相应字节;系统多用了一个指针维...

gyros 823

js面试题收集

js面试题整理 链接 H5 新特性 50个css面试题 css优化,js优化以及web性能优化 js面试题知识点全解(一原型和原型链) 如何实现浏览器内多个标签页之间的通信? (阿里) WebSocket、SharedWorker; 也可以调用localstorge、cookies等本地存储方式; localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件, 我们通过监听...

weixin_44218695的博客 377

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 68

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 227

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 334

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 124

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 196
上一篇: 如何快速找出成对元素中单身的那个小可怜(异或算法)
桃花源居
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值