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

示例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 方法。

	@Overridepublic 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.mzph.cn/news/794916.shtml

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

相关文章

爬取学习强国视频小示例

因为需要爬取的视频数量并不是很大&#xff0c;总共需要将131个视频下载下来&#xff0c;所以就直接去手动找找视频的地址和名称保存下来的。由于页面是动态加载的&#xff0c;所以我们无法在网站源码中直接找到视频的超链接。设想是可以用Selenium模拟浏览器点击进行动态加载获…

uni-app如何实现高性能

这篇文章主要讲解uni-app如何实现高性能的问题&#xff1f; 什么是uni-app&#xff1f; 简单说一下什么是uni-app&#xff0c;uni-app是继承自vue.js&#xff0c;对vue做了轻度定制&#xff0c;并且实现了完整的组件化开发&#xff0c;并且支持多端发布的一种架构&#xff0c…

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…

移动Web学习04-移动端订单结算页PC端个人中心页面

5、电商结算页面案例 css body{background-color: #F2F2F2; } * {box-sizing: border-box;margin: 0;padding: 0; }.main{padding: 12px 11px 80px; }.pay{display: flex;height: 80px;background-color: #fff;bottom: 0;width: 100%;border-top: 1px solid #ededed;position:…

04-自媒体文章-自动审核

自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后&#xff0c;开始审核文章 2 审核的主要是审核文章的内容&#xff08;文本内容和图片&#xff09; 3 借助第三方提供的接口审核文本 4 借助第三方提供的接口审核图片&#xff0c;由于图片存储到minIO中&…

探索 AWK:Linux 下的文本处理

打印特定字段 打印出每行的第三个字段 # cat file.txt 1 2 3 4 5 10 20 30 40 50# awk {print $3} file.txt 3 30文本转换和格式化 给第3行都加10 # awk {$3$310; print $1, $2, $3, $4, $5} file.txt 1 2 13 4 5 10 20 40 40 50数据分析 累加第一列的和 # awk {print $1…

JAVA毕业设计132—基于Java+Springboot+Vue的自习室座位预约小程序管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的自习室座位预约小程序管理系统(源代码数据库)132 一、系统介绍 本项目前后端分离带小程序&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注…

B3799 [NICA #1] 序列

[B3799 NICA #1] 序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 发现两个操作跟顺序无关&#xff0c;最大子序列和就是所有正数之和。 对数组进行排序&#xff0c;之后求前缀和。用 n o w now now记录操作一加了多少。找到第一个 a i n o w < 0 a_i now \lt 0 ai​…

【Arthas案例】某应用依赖两个GAV-classifier不同的snakeyaml.jar,引起NoSuchMethodError

多个不同的GAV-classifier依赖冲突&#xff0c;引起NoSuchMethodError Maven依赖的三坐标体系GAV(G-groupId&#xff0c;A-artifactId&#xff0c;V-version) classifier通常用于区分从同一POM构建的具有不同内容的构件物&#xff08;artifact&#xff09;。它是可选的&#xf…

泰坦尼克号幸存者数据分析

泰坦尼克号幸存者数据分析 1、泰坦尼克号数据集2、数据集加载与概览3、泰坦尼克号幸存者数据分析4、哪些人可能成为幸存者&#xff1f; 1、泰坦尼克号数据集 泰坦尼克号的沉没是世界上最严重的海难事故之一&#xff0c;造成了大量的人员伤亡。这是一艘号称当时世界上最大的邮轮…

​​​​​​​【人工智能】手写数字识别

手写数字识别 实验背景 数据集介绍 MNIST数据集包含了一系列的手写数字图像&#xff0c;包括0到9的数字。每张图像都是灰度图像&#xff0c;尺寸为28x28像素。数据集共包含60000张训练图像和10000张测试图像。 MNIST数据集的目标是通过训练一个模型&#xff0c;使其能够正确地识…

Spring Boot 集成 RabbitMQ(二)

什么是Spring Boot&#xff1a; Spring Boot是Spring Framework的简化版&#xff0c;其目标是使用尽可能少的配置来简化Spring应用的开发、部署和维护。它根据项目的依赖关系自动配置Spring环境&#xff0c;开箱即用。 什么是RabbitMQ&#xff1a; RabbitMQ是一种开源的、实…

彩虹聚合DNS管理系统v1.0全新发布

聚合DNS管理系统&#xff08;https://github.com/netcccyun/dnsmgr&#xff09;可以实现在一个网站内管理多个平台的域名解析&#xff0c;目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&#xff0c;每个用户可分配不同的…

vscode+anaconda 环境python环境

环境说明&#xff1a; windows 10 vscodeanaconda anaconda 安装&#xff1a; 1、官网下载地址:Free Download | Anaconda 2、安装 接受协议&#xff0c;选择安装位置&#xff0c;一直next&#xff0c;到下面这一步&#xff0c;上面是将Anaconda 添加至环境变量&#xff0…

社恐!!!

社恐 1. 独自灿烂去吧&#xff0c;不要在乎任何人的眼光&#xff01; 链接: link 在人群中扭扭捏捏&#xff0c;总觉得别人关注自己 其实你看根本无人在意我&#xff0c;对于他们而言我只是他们日常生活中的一个配角。大家都关注着自己&#xff0c;根本不会有人分心来关注我…

linux使用supervisor部署springboot

supervisor 美&#xff1a;[suːpərvaɪzər ] n.监督人;主管人;指导者; Supervisor是一个进程控制系统工具&#xff0c;用于在Linux系统上管理和监控其他进程。它可以启动、停止、重启和监控应用程序或服务&#xff0c;并在其异常退出时自动重启它们。Supervisor通过提供一个…

spring 和spring boot的区别

Spring是一个开源的Java开发框架&#xff0c;旨在简化Java应用程序的开发。它提供了一个综合的编程和配置模型&#xff0c;用于构建各种类型的应用程序&#xff0c;从简单的命令行工具到复杂的企业级Web应用程序。 Spring Boot是Spring框架的一个扩展&#xff0c;旨在简化Spri…

使用阿里云试用Elasticsearch学习:2.2 深入搜索——全文搜索

我们已经介绍了搜索结构化数据的简单应用示例&#xff0c;现在来探寻 全文搜索&#xff08;full-text search&#xff09; &#xff1a;怎样在全文字段中搜索到最相关的文档。 全文搜索两个最重要的方面是&#xff1a; 相关性&#xff08;Relevance&#xff09; 它是评价查询…

idea开发 java web 配电室后台管理系统bootstrap框架web结构java编程计算机网页

一、源码特点 java 配电室后台管理系统是一套完善的完整信息系统&#xff0c;结合java web开发和bootstrap UI框架完成本系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主 要采用B/S模式开发。 前段主要技术 cs…

阿里 Arthas 工具使用

Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类加载信…