java中list.add添加元素覆盖之前的问题

2023-05-16

1 **在码代码时,发现一个问题:**使用

  list<object> list=new Arraylist<object>();
  list.add(object);

出现之前添加的元素被最后的元素覆盖。
类似于:

ArrayList<Object> list  = new ArrayList<Object>();
Object obj;
for (int i = 10; i > 0; i--) {
  objt.set(i);
    list.add(obj);
    /*会发现list存放的obj的数都是1*/

之所以将 Objec new在循环的外面,就是想节省空间,(不用在循环中每次循环斗殴需要new一个对象)。但是忘了考虑到:
ArrayList集合里存的是一个对象的引用当我们改变obj时,因为ArrayList.add的是 obj的引用,之前的元素都指向了同一个对象 obj,所以在改变obj时,之前添加的也会随之改变。
解决方法:
将 Objec new在循环的里面。

  for (int i = 10; i > 0; i--) {
   Object obj=new Object();
      objt.set(i);
        list.add(obj);

2 还有一种情况:
涉及静态变量

public Class Student {
    private static String id;
    private static String name;

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }
}

如果我们这样将元素添加到list中:

ArrayList<Student> list  = new ArrayList<Student>();

Student s1 = new Student("1", "小山");
Student s2 = new Student("2", "小康");
// 
list.add(s1);
list.add(s2);

//如果输出两个对象的话你会发现都是小康

//或者你像这样

ArrayList<Student> list  = new ArrayList<Student>();

for (int i = 10; i > 0; i--) {

    list.add(new Student(i, "name"));

}

//你会发现输出所有对象,他们的id都是1
每次add()的虽然是不同的对象,但是结果还是被覆盖了,这是为什么呢?
原因
static(Student 类中)就是这个修饰符
让修饰的属性变为静态,
意味着该类的所有对象共享同一个属性
所以尽管集合里存的是不同的对象,但是对象的属性还是同一个值

借鉴:https://blog.csdn.net/zouhaipeng/article/details/53160124

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中list.add添加元素覆盖之前的问题 的相关文章

  • 是什么使得 java 中的枚举不可实例化?

    我知道一个枚举 enum Year First Second Third Fourth 被转换成 final class Year extends Enum
  • Maven 管理的 Java EE 应用程序中 JBoss 提供的库

    这对我来说实际上不太可能 但网上似乎没有关于将 JBoss 提供的依赖项导入 Maven 管理的 Java EE 应用程序以在其中部署的直接答案 据我所知 有两件事与这个问题有关 那就是jboss as client外部 就 JVM 而言
  • Spring Boot“没有可用消息”错误(状态 = 404),

    我正在使用带有嵌入式 Tomcat 的 Spring Boot 当它启动时 它会登录到控制台 s w s m m a RequestMappingHandlerMapping 将 home 映射到公共 java lang String co
  • Java:计算字符串中字母的出现次数

    我正在尝试编写一个程序来计算字符串中字母的出现次数 例如 如果用户输入 Java 则会显示 j 1 a 2 v 1 但是 我的程序似乎有问题 当我输入 java 这个词时 它显示的是 j 0 a 1 v 0 Scanner myScanne
  • getAnnotations() 为空

    我想在我的应用程序中使用注释 因此 我为注释创建了 hello world 如下示例 public class HelloAnnotation Foo bar Hello World public String str public sta
  • Java RMI 通过互联网

    我正在用 Java 开发一个游戏 使用 RMI 进行所有网络通信 RMI 允许我调用服务器上的方法 但这对我来说还不够 我还希望服务器能够在连接的客户端之间传播消息 我的客户端查找服务器 它的接口扩展了远程 并在其上注册 它允许服务器知道谁
  • Android - Firebase - 保存新数据而不覆盖旧数据

    创建此问题是因为我之前的问题包含 2 个问题 而不是将其缩小到 1 Aim 用户将能够存储新数据而不会覆盖之前提交的数据 描述 目前 当用户输入新报告时 事件报告节点中的用户事件报告数据将被覆盖 用户发送的旧事件报告中的数据应与新数据一起保
  • MySQL 中电话号码的最佳数据类型是什么?它的 Java 类型映射应该是什么?

    我正在将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序 我需要存储仅包含数字的电话号码 10 我对使用数据类型的数据类型有点困惑 MySQL 中最适合它的数据类型是什么 为此 Bean POJO 类中的 Jav
  • spring启动时如何加载@Cache?

    我正在使用 spring cache 来改进数据库查询 其工作原理如下 Bean public CacheManager cacheManager return new ConcurrentMapCacheManager books Cac
  • 当派生类中重写该方法时,如何使用派生类 Object 调用基类方法?

    class A public void m1 System out println hi base class class B extends A public void m1 System out println hi derived p
  • Postgres UUID 和休眠

    我有一个具有 UUID 列的实体 它不是主键 我正在使用 Postgres 和 hibernate 我对此专栏的类型是https www postgresql org docs 9 1 static datatype uuid html h
  • Java 中的逻辑回归

    我们需要用 Java 进行逻辑回归 我们在 Python 中使用了这段代码http blog smellthedata com 2009 06 python logistic regression with l2 html http blo
  • 想要从 beanIO 字段名称标签在 csv 中写入标题

    我想在 csv 文件中写入标题 因为我的文本文件不包含任何标题 所以我想从 beanIO 字段名称标签写入它 我有一个 beanIO 有两个流 一个用于读取 另一个用于写入 这是输入文件 文本输入 txt 1 约翰 露 BA xxx1萨姆
  • 如何为我的数独游戏制作 GUI? (摇摆)

    到目前为止 我已经编写了生成随机 9x9 数独网格的代码 我是Java的初学者 所以我有一些关于如何做UI的问题 显示数字的最佳方式是什么 我尝试创建 81 个 JTextFields 这非常乏味 而且我确信有一种有效的方法可以做到这一点
  • 将 JAR 文件打包为 WAR 文件

    我有一系列依赖的Java项目 我想将它们打包成一个 JAR 文件 以便在我的 WAR 文件中使用 这些项目依赖于大量的外部库和项目 如log4j apache commons等 我选择 Eclipse 中的所有项目并导出为 JAR 文件 然
  • 如何从字典列表中查找键的值?

    如何从字典列表中获取给定键的值 mylist powerpoint color blue client name Sport Parents Regrouped sort order ascending chart layout 1 cha
  • 带有 CONTAINS 查询的PreparedStatement

    我有一个查询需要连续运行 28000 次 所以我认为使用准备好的语句可能是一个聪明的主意 这是我的查询 String requestWithFirstName SELECT SE ELEMENT ID SE LASTNAME SE FIRS
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • 如何提高QNX6下Eclipse IDE的性能

    我们在 VMWare 环境中通过 QNX6 运行 Eclipse 速度非常慢 Eclipse 是这样启动的 usr qnx630 host qnx6 x86 usr qde eclipse eclipse data root workspa
  • 我可以在方法体内使用注释吗?

    允许 Java 注释的语义将它们放置在某处在函数体内 例如注释特定的函数调用 语句或表达式 例如 class MyClass void theFunc Thing thing String s null Catching NullPoint

随机推荐

  • 清晰解读C语言中的比特序、字节序、位域、大小端

    一 比特序 位序 比特序表示一个字节中8个比特位 xff08 bit xff09 之间的顺序问题 分为LSB 0 位序和MSB 0 位序 LSB 最低有效位 MSB 最高有效位 LSB least significant bit 0位序 x
  • 【转载】四种常见系统架构介绍

    转自于 四种常见系统架构介绍 宇大 大 博客园 软件架构 xff08 software architecture xff09 就是软件的基本结构 合适的架构是软件成功的最重要因素之一 大型软件公司通常有专门的架构师职位 xff08 arch
  • 在Ubuntu 20.04上通过Docker使用ROS Kinetic (含RViz, Gazebo等图形界面及加速方法)

    背景 传统上 xff0c ROS 1的每一代系统都基于某一个版本的Ubuntu系统进行开发 xff0c 而其依赖库规模庞大 xff0c 再加上Python 2 3的转换问题 xff0c 导致在不同版本的Linux系统上原生编译安装非对应版本
  • 嵌入式开发中断全解(2)Hard Fault的诊断

    承接上次的文章 xff0c 讲几个大家应该都看过下面的几个中断 xff0c 有的是在启动文件中或者是 c文件中 注意 xff1a 上述是ST公司的Stm32芯片 这里的GD32芯片是国产芯片 xff0c 和stm32类似的操作 xff0c
  • 梯度、Hessian矩阵、Jacobian矩阵的计算

    x表示为如下列向量 xff1a 一 f x 为一维 此时其一阶导数构成的向量为梯度向量g x xff0c 其二阶导数构成的矩阵为Hessian xff08 海森 黑塞 xff09 矩阵G x xff1b 导数可以表示为 xff1a 梯度向量
  • py基础之猜拳游戏的实现

    题目 xff1a 用所学的 py 基础实现猜拳游戏的 5 局 3 胜 xff08 面向对象之前的所有基础知识 xff09 要求 xff1a 5 局 3 胜 xff0c 平局时再加一局 人与电脑对局 思路 xff1a 用 0 表示剪刀 xff
  • 操作系统历史与设计理念

    操作系统的发展并不是一蹴而就的 xff0c 直到今天操作系统仍在不断发展中 xff0c 它与计算机硬件的发展息息相关 xff0c 例如内存 cpu等 以下是操作系统大致的演变过程 xff1a 到现如今 xff0c 计算机系统已经发生了翻天覆
  • 微软牵手大疆打造先进无人机技术

    2018微软人工智能大会正式开幕 xff0c 在大会上微软宣布 xff0c 全球最大的无人机制造商大疆创新 DJI 正在与微软合作 xff0c 打造面向企业市场的先进无人机技术 大疆创新首席科学家吴迪表示 xff0c 基于双方的战略合作 x
  • Linux环境使用VSCode调试简单C++代码

    本文将通过演示一个简单C 43 43 代码的编译调试过程 xff0c 介绍在VSCode中如何使用Linux环境下的GCC C 43 43 编译器 g 43 43 和GDB 调试器 gdb 关于GCC g 43 43 gcc gdb xff
  • layui date控件的使用

    最近项目多用layui xff0c 就总结一下 span class token tag span class token tag span class token punctuation lt span div span span cla
  • putty超时解决方案

    putty连续3分钟左右没有输入 就自动断开 然后必须重新登陆 很麻烦 在网上查了很多资料 发现原因有多种 环境变量TMOUT引起 ClientAliveCountMax和ClientAliveInterval设置问题或者甚至是防火墙的设置
  • 最好的黑客网站

    全国最早最大的黑客网站 黑客基地 xff1a http vip hackbase com 学黑客必去的网站 黑客基地 xff1a http www hackbase com 新手学黑客快速入门的好地方 xff1a http vip hack
  • mysql-connector-java-5.1.40-bin.jar包

    mysql connector java 5 1 40 bin jar 链接 xff1a https pan baidu com s 1G7 FsxkEJfZ4Cy6R s5j g 提取码 xff1a 5r5o
  • 利用spm12将dicom医学图像格式转成NII格式

    废话不多说 xff0c 直接上干货 xff0c 一 首先下载spm12 国外的下载源 xff0c 比较慢 xff0c 这里有百度网盘 xff0c 需要的直接下载 xff1a 链接 xff1a https pan baidu com s 1Z
  • securityCRT ssh远程开启mysql,断开连接后,mysql服务就停止服务

    问题描述 xff1a ssh远程连接服务器 xff0c 在服务器中开启mysql服务 xff0c 在正常断开ssh 连接后 xff0c 重新连接口查看mysql的状态发现 xff0c mysql的状态 xff1a 重新启动mysql xff
  • py基础之掷骰子游戏的实现

    掷骰子游戏 xff08 循环的使用及掌握 xff09 0 两个骰子都是1 6 1 玩游戏要有金币 xff0c 没有金币不能玩游戏 2 玩一局游戏赠金币一枚 xff0c 充值获得金币 3 充值为10元的倍数 xff0c 10元 20个金币 x
  • centOS 不能上外网怎么下载依赖 (通过挂载镜像)

    问题 我们在服务器上部署系统环境的时候 xff0c 常常会遇到找不到该命令 bash span class token operator span span class token punctuation span span class t
  • linux 搭建FTP服务器

    linux 搭建FTP服务器 网上对于ftp搭建有很多 xff0c 但是说的比较的麻烦 xff0c 而且十分容易出错 xff0c 并且在创建完成后存在一些配置的注意事项 废话不多说 xff0c 现在开始 1 安装 vsftpd 安装FTP服
  • 提取论文中公式神奇(写论文的福音)

    写论文还在愁怎么写复杂的公式吗 xff0c 想引用其他的论文的公式 xff0c 发现都是这样的 P X i
  • java中list.add添加元素覆盖之前的问题

    1 在码代码时 xff0c 发现一个问题 xff1a 使用 list lt object gt list 61 new Arraylist lt object gt list add object xff1b 出现之前添加的元素被最后的元素