List集合遍历过程中修改元素(有坑)

说来惭愧,学 java 2年了,对 “Java是值传递” 这句话还没有理解它的精髓,以至于编程的时候出现了一些错误,这里记录一下。

一.问题再现

1.1将List集合中的每个字符串更改为其他值

1.2将List集合中的对象更改为其他对象

二.问题分析

Java是值传递。当传的是基本类型时,传的是值的拷贝,对拷贝变量的修改不影响原变量;当传的是引用类型时,传的是引用地址的拷贝,但是拷贝的地址和真实地址指向的都是同一个真实数据,因此可以修改原变量中的值;当传的是String类型时,虽然拷贝的也是引用地址,指向的是同一个数据,但是String的值不能被修改(每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前的字符串对象的内容是没有改变的)。

List集合里其实保存的是堆中对象的地址,而非引用变量,将外面的引用变量指向了新的对象地址并不能影响List中的指向。但是你可以通过引用来修改对象的属性。

三.方案解决

3.1通过引用变量修改对象的属性

3.2使用 Lsit 中特有的方法 set() 修改指定索引处元素

3.3使用 Java 8 中的 Stream 来处理列表中的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/321489.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景: 最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报…

【Rust日报】2024-01-12 将 Rust 引入 Git 项目

将 Rust 引入 Git 项目 去年年底的假期里,Taylor Blau 花了一些时间思考如何将 Rust 引入 Git 项目。 将 Rust 引入 Linux 内核的重要工作正在进行中。在他们既定的目标中,他认为有一些可能与 Git 项目相关: 由于语言的安全保证,内…

Jenkins+nexus

jiekins安装完成 1、安装java环境 [rootnexus ~]# tar -xf jdk-8u211-linux-x64.tar.gz -C /usr/local [rootnexus ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/jdk1.8.0_211 PATH$PATH:$JAVA_HOME/bin [rootnexus ~]# source /etc/profile.d/java.sh 必须要选择与n…

UE5 伤害数字跳出

学习视频 大体思路: 1.创建一个控件蓝图。 播放动画,K透明度,文本位置。 2.创建一个控件组件。 类默认值中设置。 3.在位置处创建组件实例 自定义事件略。

汇编语言与接口技术——AD转换及PWM控制

一、 实验要求 实验目的: 掌握SPI总线的使用方式掌握xpt2046 AD转换芯片的工作原理掌握SPI总线方式实现基于xpt2046的AD转换掌握PWM控制功率的方式 实验内容: 学习xpt2046 AD转换芯片的工作原理,利用SPI总线实现基于该芯片的AD转换&#x…

idea使用谷歌翻译 有道翻译 百度翻译

中文版:文件——设置——工具——Translation,然后选择需要配置的翻译 英文版:File——settings——Tools——Translation,然后选择需要配置的翻译 谷歌翻译大家可以度娘直接搜索Google_translation_win 有道和百度翻译得去注册申…

什么是RoPE-旋转位置编码?

RoPE位置编码是大模型中最常见的位置编码之一。像是谷歌的PaLM和meta的LLaMA等开源大模型都是RoPE位置编码,那么RoPE有什么特点呢? 本文将介绍如下内容: RoPE旋转位置编码概要什么是位置编码?RoPE及其特点总结 一、RoPE旋转位置…

书生·浦语大模型实战营作业(四)

基础作业: 构建数据集,使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手,效果如下图所示,本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称! 数据集 回答结果 进阶作…

Rsync远程同步,删除大量文件

目录 什么是文本传输? 文件传输工具: Rsync工具介绍 rsync的作用 命令格式 实验配置rsync源服务器 先检查是否有rsync工具 建立/etc/rsyncd.conf 配置文件 为备份账户创建数据文件 给数据文件添加权限 保证所有用户对源目录/var/www/html 都有读…

Android-跨进程

startService和bindService的区别,生命周期以及使用场景 startService: onCreate -> onStartCommand -> onDestory ,在多次调用startService的时候,onCreate不重复执行,但是onStartCommand会执行。startService调…

Vulnhub靶机:driftingblues 4

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues4(10.0.2.20) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…

sql | 学生参加各科考试次数

学生表: Students------------------------ | Column Name | Type | ------------------------ | student_id | int | | student_name | varchar | ------------------------ 在 SQL 中,主键为 student_id(学生ID)。 该表内的每…

Linux|centos7操作系统|VMware虚拟机安装水星免驱USB网卡8188gu记录

引言: 最近对于嵌入式系统比较感兴趣,因此,计划先使用VMware workstation虚拟机试一试Linux系统下的网卡驱动安装 这不试不知道,一试吓一跳,发现Linux下的驱动安装还是比较麻烦的,下面将就本次的Linux系统…

343. 整数拆分(动态规划)

题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出…

设计模式——1_4 外观(Facade)

文章目录 定义图纸一个例子:自动生成一杯茶沏茶的流程组合方式一:直接组合方法二:外观 碎碎念多个外观对象外观和封装外观和单例姑妄言之 定义 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这…

详细探讨mfc140.dll丢失的解决方法,并比较各种方法的优劣

mfc140.dll是Microsoft Foundation Class (MFC) 库中一个重要的DLL文件,它包含了多个执行程序使用的函数和资源。这个库通常用于开发Windows操作系统上的应用程序。但有时会发生mfc140.dll缺失或损坏的错误,导致一些依赖它的应用程序无法运行。今天的这篇…

微信强制分享红包裂变系统源码

源码介绍 微信裂变引流系统源码:高效吸粉,轻松变现 探索这款创新的微信裂变引流系统源码,它将为你的广告推广活动注入强大的动力。凭借其丰富的功能和卓越的性能,它将成为你实现高效引流、粉丝增长和变现转化的强大工具。 该系…

精确掌控并发:固定时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(14)篇。点击上方关注,深入了解支付系统的方方面面。 本篇主要介绍分布式场景下常用的并发流量控制方案,包括固定时间窗口、滑动时间窗口、漏桶、令牌桶、分布式消息中间件…

通过开源端点可见性改善网络安全响应

在当今复杂的数字环境中,企业内的许多不同端点(从数据中心的服务器到咖啡店的笔记本电脑)创建了巨大且多样化的攻击面。每个设备都存在网络安全威胁的机会,每个设备都有其独特的特征和复杂性。攻击者使用的多种攻击媒介不仅是一个…

详解SpringCloud微服务技术栈:强推!源码跟踪分析Ribbon负载均衡原理、Eureka服务部署

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:认识微服务、服务拆分与远程调用 📚订阅专栏:微服务技术全家桶…