Java_自定义实体类的列表List<T>调用remove()失败讲解

news2025/1/21 0:59:07

示例1

  • 前提:

    新建一个主类Demo1

  • 需求:

    在一个列表中有三条String的数据,想要使用remove(Object o)删掉其中一条。

  • 结果:

    remove(Object o)成功把数据删掉。

demo

示例2

  • 前提:

    新建一个自定义实体类DataExample和一个主类Demo

  • 需求:

    在一个列表中有三条实体类的数据,想要使用remove(Object o)删掉其中一条。

  • 结果:

    得到失败数据,remove(Object o)根本没有起作用把数据删掉。

demo

public class DataExample {

	private final String name;
	private int age;

	public DataExample(String name,int age) {
    	this.name=name;
    	this.age=age;
	}

	public DataExample(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}

	void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return this.age;
	}

}
import java.util.ArrayList;
import java.util.List;

public class Demo {

	public static void main(String[] args) {

		List<DataExample> test1 = new ArrayList<>();
		
		test1.add(new DataExample("1",1));
		test1.add(new DataExample("2",2));
		test1.add(new DataExample("3",3));

		test1.remove(new DataExample("3",3));
		
		for(int i=0;i<test1.size();i++) {
			System.out.println(test1.get(i).getName()+":"+test1.get(i).getAge());
		}
	}

}

通俗易懂知识讲解

以上两个示例都是List删除数据,唯一不同的是列表类型。一个是String,一个是自定义的实体类DataExample。
首先,remove(Object o)删除是需要作比较,也就是equals方法。
因为String已经实现了 equals 方法来比较字符串内容,因此可以直接使用 remove 方法来删除指定的字符串。
但是自定义的实体类DataExample并没有实现自己的 equals 方法,所以 remove 方法也就没有用。
所以一般来说,在新建自定义的实体类之后,会要重写一个属于自己的 equals 方法。

	@Override
	public boolean equals(Object o) {
		if (o == this)
			return true;
		if (!(o instanceof DataExample))
			return false;
		DataExample other = (DataExample) o;
		if (this.getName() == null ? other.getName() != null : !this.getName().equals(other.getName()))
			return false;
		if (this.getAge() != other.getAge())
			return false;
		return true;
	}

成功删除

demo

拓展

自定义的实体类需要读的源码:Lombok的@Data注解

demo

官网:https://projectlombok.org/features/Data

在进入项目后这种问题其实不用担心,但是你可以多掌握一点原理。
因为工作中的项目一般会引入Lombok,然后使用注解解决这些繁琐的小问题。

demo

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PC发送指令给单片机控制LED(与上一篇文章相反)

此时要重新配置寄存器 &#xff0c;实现电脑往单片机传输数据 1、配置SCON寄存器的REN 即 REN 1 2、有TI&#xff08;发送中断&#xff09;就有RI&#xff08;接收中断&#xff09; 3、优化 发现发送 o 时&#xff0c;D5亮灯会有延迟 下面就是做到真正的无延迟的全双工通信 …

STC89C51学习笔记(四)

STC89C51学习笔记&#xff08;四&#xff09; 综述&#xff1a;本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。 一、数码管 1.数码管显示原理 位选&#xff1a;对74HC138芯片的输入端的配置&#xff08;P22、P23、P24&#xff09;&#xff0c;来选择实现位选&…

Android 代码自定义drawble文件实现View圆角背景

简介 相信大多数Android开发都会遇到一个场景&#xff0c;给TextView或Button添加背景颜色&#xff0c;修改圆角&#xff0c;描边等需求。一看到这样的实现效果&#xff0c;自然就是创建drawble文件&#xff0c;设置相关属性shap&#xff0c;color&#xff0c;radius等。然后将…

第二节课《轻松玩转书生·浦语大模型趣味 Demo》

比较匆忙&#xff0c;假期前仿照第一期课程的内容好像被清空了&#xff0c;重新搭建一次。 https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md 按照那老师写好的&#xff0c;一步步复制就好了 浦语灵笔2的大概率是会超出显存&#xff0c;先不测试了…

JavaScript权威指南(第7版) 笔记 - 扩展操作符总结

扩展操作符 ... &#xff0c;不是真正意义上的JavaScript操作符。 let str "0123ABC" console.log(typeof ...str);// Uncaught SyntaxError: Unexpected token ... 上面的第2行代码会报错&#xff0c;… 操作符只能在数组字面量、对象字面量、函数调用中使用。 在…

JS详解-设计模式

工厂模式&#xff1a; 单例模式&#xff1a; // 1、定义一个类class SingleTon{// 2、添加私有静态属性static #instance// 3、添加静态方法static getInstance(){// 4、判断实例是否存在if(!this.#instance){// 5、实例不存在&#xff0c;创建实例this.#instance new Single…

Redis从入门到精通(七)Redis实战(四)库存超卖、一人一单与Redis分布式锁

↑↑↑请在文章开头处下载测试项目源代码↑↑↑ 文章目录 前言4.3 优惠券秒杀4.3.4 库存超卖问题及其解决4.3.4.1 问题分析4.3.4.2 问题解决 4.3.5 一人一单需求4.3.5.1 需求分析4.3.5.2 代码实现4.3.5.3 并发问题4.3.5.4 悲观锁解决并发问题4.3.5.5 集群环境下的并发问题 4.3.…

C语言【编译和链接】

1.程序执行过程 C语言的编译和链接是将源代码转换为可执行程序的过程。下面是C语言编译和链接的基本步骤&#xff1a; 预处理&#xff1a;在编译前&#xff0c;预处理器会对源代码进行。它会处理以"#"开头的预处理指令&#xff0c;#include和#define&#xff0c;并将…

【浅尝C++】继承机制=>虚基表/菱形虚继承/继承的概念、定义/基类与派生类对象赋值转换/派生类的默认成员函数等详解

&#x1f3e0;专栏介绍&#xff1a;浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 &#x1f3af;每日格言&#xff1a;每日努力一点点&#xff0c;技术变化看得见。 文章目录 继承的概念及定义继承的概念继承的定义定义格式继承关系与访问限定符 基类和派生类对象赋值转换继…

CSS样式计算

目录 用户代理样式表确认声明值层叠冲突重要性权重源次序 继承使用默认值关于a元素不能继承的问题 在网页中&#xff0c;每个 元素都有着许多 CSS属性&#xff0c;有些 属性我们对其 声明并赋值&#xff0c;有些 属性则没有&#xff0c;我们可能会想当然的以为一个 元素会…

如果在 Ubuntu 系统中两个设备出现两个相同的端口号解决方案

问题描述&#xff1a; 自己的移动机器人在为激光雷达和IMU配置动态指定的端口时&#xff0c;发现激光雷达和深度相机配置的 idVendor 和 idProduct 相同&#xff0c;但是两个设备都具有不同的ttyUSB号&#xff0c;如下图所示 idVendor&#xff1a;代表着设备的生产商ID,由USB设…

Vuex(vue 项目中实现 频繁、大范围数据共享的技术方案)

参考文档(点击查看) 好处 1.数据的存取一步到位&#xff0c;不需层层传递 2.数据的流动非常清晰 3.存储在Vuex中的数据都是响应式的&#xff08;数据更新后&#xff0c;使用数据的组件都会自动更新&#xff09; Vuex基础配置 npm i vuex3.6.2state中用来存储数据&#xff0c…

如何客观评价5G的现状?

前几天&#xff0c;在知乎上看到一个帖子&#xff0c;热度挺高&#xff1a; 看了一下帖子的回答&#xff0c;基本上都在骂5G。 作为通信行业从业者&#xff0c;我说说我自己的看法。大家姑且听听&#xff0c;一起交流一下。 我们目前所处的这个时代&#xff0c;有一个很大的特点…

移动Web学习05-移动端适配Less预处理器

7、移动端适配 7.1、什么是适配&#xff1f; 简单理解就是、同一个网页&#xff0c;在不同屏幕分辨率的设备下、显示还是一样的&#xff0c;你可以理解为、网页当中的图片&#xff0c;盒子之间的距离、文字的大小、随着屏幕分辨率的变化而变化 前面我们学习了flex布局的方式…

Web大并发集群部署之集群介绍

一、传统web访问模型 传统web访问模型完成一次请求的步骤 1&#xff09;用户发起请求 2&#xff09;服务器接受请求 3&#xff09;服务器处理请求&#xff08;压力最大&#xff09; 4&#xff09;服务器响应请求 传统模型缺点 单点故障&#xff1b; 单台服务器资源有限&…

excel统计分析——多元线性回归

参考资料&#xff1a;生物统计学 多元线性回归&#xff08;multiple linear regression&#xff09;是具有一个因变量或多个&#xff08;两个或以上&#xff09;自变量的线性回归&#xff0c;是直线回归的拓展&#xff0c;其模型和计算过程与直线回归类似&#xff0c;只是在计算…

【软件工程】测试规格

1. 引言 1.1简介 本次的测试用例是基于核心代码基本开发完毕&#xff0c;在第一代系统基本正常运行后编写的&#xff0c;主要目的是为了后续开发与维护的便利性。 该文档主要受众为该系统后续开发人员&#xff0c;并且在阅读此文档前最后先阅读本系统的需求文档、概要设计文…

Qt事件学习案例

视频链接 https://www.bilibili.com/video/BV18B4y1K7Cs?p7&spm_id_frompageDriver&vd_sourcefa4ef8f26ae084f9b5f70a5f87e9e41bQt5跟着视频做即可&#xff0c;Qt6部分代码需要改动,改动的地方注释有写 素材 百度云 链接&#xff1a;https://pan.baidu.com/s/158j…

K8S - Deployment 的版本回滚

当前状态 先看deployment rootk8s-master:~# kubectl get deploy -o wide --show-labels NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES …

蓝桥杯嵌入式(G431)备赛笔记——LED

cubeMX配置: 原理图,其中PD2高电平使能锁存器,PC8-15默认给高电平,放置上电初始化LED亮 74HC573是八路输出锁存器 1脚是使能,低电平有效,高电平输出高阻 2~9是输入,PC8-PC15 19~12是输出 11是锁存,即PD2: 高电平是同步,即输出跟随输入变化 低电平锁存,即输出不再改变 …