如何重写equals方法

2023-11-11

重写equals方法

我们都知道,如果不对equals方法进行重写的话,那么它默认比较的就是两个对象的地址值是否是一样的。但是我们往往需要比较的是对象的内容是否是一样的,除了几个内置重写了equals方法的类型,我们写的bean一般都要自己重写equals方法才能让它比较的是对象的内容。

重写equals方法示例:

User.java

public class User {
	
	String name;
	Integer id;
	
	@Override
	public boolean equals(Object obj) {
		// 首先判断传进来的obj是否是调用equals方法对象的this本身,提高判断效率
		if (obj == this) {return true;}
		// 判断传进来的obj是否是null,提高判断效率
		if (obj == null) {return false;}
		// 判断传进来的obj是否是User对象,防止出现类型转换的异常
		if (obj instanceof User) {
			User user = (User) obj;
			boolean flag = this.name.equals(user.name) && this.id == user.id;
			return flag;
		}
		// 如果没有走类型判断语句说明两个比较的对象它们的类型都不一样,结果就是false了
		return false;
	}	
     ....//get\set 方法
}

测试方法:

@Test
	public void test2() throws Exception {
     System.out.println("------------------------------------------");
     User user=new User("李三",12);
     User user1=new User("李三",12);
     System.out.println(user.equals(user1)+".....");
	}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zud5oGzp-1620872912829)(img/1620872862010.png)]

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

如何重写equals方法 的相关文章

  • “java.io.IOException:连接超时”和“SocketTimeoutException:读取超时”之间有什么区别

    如果我设置一个套接字 SoTimeout 并从中读取 当读取时间超过超时限制时 我会收到 SocketTimeoutException 读取超时 这是我的例子中的堆栈 java net SocketTimeoutException Read
  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • C++STL:vector

    C STL中的vector是一种动态分配的数组 可以在运行时动态增加和删除元素 它也是C 中最常用的容器之一 以下是vector的使用介绍 引入头文件 在使用vector之前 需要添加头文件 include
  • nrm 源管理

    什么是nrm nrm 是一个 npm 源管理器 你可以快速地在 npm源间切换 大家在开发中可能会经常切换 npm 源 我们会使用命令切换 如 npm set registry https registry npm taobao org 或
  • Vue style中的 scoped 属性

    Vue 中存在 scoped 属性 HTML5中也存在一个 scoped 属性 而且 这两者都是针对 css 样式处理的属性 所以很多文章在 解释 Vue scoped 的时候 都会把两者混为一谈 直接进把 HTML5 scoped 的定义
  • Login控件用法,用自己的数据库提供login控件的数据源

    一 在配置web config文件 web config 文件
  • 基于SuperSocket 1.6版本的自定义帧过滤的源码分析(实现MODBUS通信)

    一 SuperSocket 1 6 自定义帧过滤的官方文档地址 http docs supersocket net v1 6 zh CN Implement Your Own Communication Protocol with IReq
  • QT信号槽机制

    信号槽 信号槽是QT中用于对象间通信的一种机制 也是QT的核心机制 在GUI编程中 我们经常需要在改变一个组件的同时 通知另一个组件做出响应 例如 一开始我们的Find按钮是未激活的 用户输入要查找的内容后 查找按钮就被激活 这就是输入框与
  • 细线表格 border-collapse:collapse;/*细线表格,合并边框*/

  • vue3获取reactive代理的target原数组

    使用toRaw获取 可从vue引入toRaw const t3 reactive age name 3 console log toRaw t3 age 官方示例
  • MySQL-SQL全部锁详解(下)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)

    终于开始攻克并行这一块了 有点小兴奋 来看看网络上R语言并行办法有哪些 赵鹏老师 R与并行计算 做的总结已经很到位 现在并行可以分为 隐式并行 隐式计算对用户隐藏了大部分细节 用户不需要知道具体数据分配方式 算法的实现或者底层的硬件资源分配
  • 关于ISP下载中 编译后自动下载代码不能执行完成的一点问题 补充keil未破解下载超范围问题

    在STC的ISP下载过程中 偶尔发现一点问题 首先在建立工程的时候没有按照自己的芯片选择 而是选择的通用型号 我在ISP中选择芯片型号后 打开串口和工程 没有提示问题 由于习惯 勾选了编译后自动下载工程 在后面的编写过程中 起初是没有问题的
  • sklearn 转换器和预估器

    刚学习sklearn时 没分清转换器的fit 和模型训练的fit 还以为是一个 结果学完了回过头来 才发现这些差异 再此记录一下 一 sklearn 转换器和预估器 转换器 Transformers 定义 转换器是一种可以对数据进行某种转换
  • 前端例程20220914:带悬停动画登陆页面

    演示 原理 对登陆框监听鼠标进入 mouseenter 和退出 mouseleave 事件 在鼠标进入时添加一个元素 并设置其扩大的动画 在鼠标退出时设置元素动画 并在动画完成后删除元素 代码
  • VUE2基础知识(详细版)

    目录 1 Vue 1 1 介绍 1 2 MVVM模型 1 3 单页面应用 SPA 2 Vue的使用 2 1 局部使用 2 2 全局使用 推荐 3 组件 3 1 介绍 3 2 说明 1 组件后缀 2 组成部分 编辑 3 步骤 4 模板语法 4
  • 创新实验_stm32_点灯_流水灯

    创新实验 stm32 点灯 流水灯 软件 步骤 实例 点灯 流水灯 软件 keil stm32cubemx proteus vscode 步骤 实例 点灯 准备 选择芯片 软件配置 编写代码 写入程序 流水灯 注意变量的位数
  • Java写一个猜数字游戏Plus

    之前我写了一个普通的猜数字游戏 那个是猜一个数字 然后提示你猜的大了还是小了 这次在学习完数组后 又来整活了 哈哈 这次写的是系统随机生成10个1 50的数字 自己去猜 不提示大了还是小了 猜出后告诉你猜中了第几个 最后把所有系统生成的随机
  • Pytorch1.4.0+cuda9.2离线安装

    由于训练机无法联网 考虑离线安装pytorch 一 确保已安装cuda和cudnn 这里我安装的是cuda9 2 cudnn7 6 5 二 安装pytorch1 4 pytorch的安装一般来说是使用conda或者pip来安装 我选择使用p
  • 集成电路相关书籍

    注 从此开始 文中提到的书籍都会在公众号对应文章末尾给出链接 不需要在微信后台获取 当然还是可以通过在微信后台回复相关书名获取对应的电子书 在后台看到很多人回复集成电路相关的一些书籍 所以本文就提供一些书籍 书籍链接在公众号本文文末直接获取
  • 数学建模常见模型算法归纳总结

    一 常见模型汇总 在数学建模中 根据具体问题的特点和要求 选择合适的模型和算法是非常重要的 同时需要根据实际情况进行调整和优化 以得到合理和可行的解决方案 二 数学建模四大模型 在数学建模中 通常将数学模型按照其应用目标和任务的不同划分为四
  • 如何重写equals方法

    重写equals方法 我们都知道 如果不对equals方法进行重写的话 那么它默认比较的就是两个对象的地址值是否是一样的 但是我们往往需要比较的是对象的内容是否是一样的 除了几个内置重写了equals方法的类型 我们写的bean一般都要自己