java中重写equals方法

STM32CubeMX 6.4.0 + STM32F407ZGT6 实战:基于YT8512C PHY的lwIP以太网配置与调试 本文详细介绍了使用STM32CubeMX 6.4.0为STM32F407ZGT6微控制器配置YT8512C PHY芯片,并成功移植lwIP以太网协议栈的实战过程。文章从硬件差异分析入手,逐步讲解时钟配置、ETH外设设置、PHY寄存器适配以及lwIP协议栈剪裁等关键步骤,旨在帮助开发者解决非标准PHY芯片的联网难题,最终实现网络连通与Ping测试。 阅读详情
 

java中重写equals方法


import java.util.Date;

class Dog{


 private String name;
 private Date birthday;
 
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
   this.birthday = birthday;
 }
 
 
}


public class Cat {

 /**Cat类中含有name和birthday两私有成员变量,且重写了equals方法和hashCode方法
  * 
  * @param name 和 birthday
  * 
  */
 
 private String name;
 private Date birthday;
 
 public Cat(){}
 
  
 
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Date getBirthday() {
  return birthday;
 }

 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
 
 /*
  * 重写equals必须注意:
  *   1 自反性:对于任意的引用值x,x.equals(x)一定为true
  *   2  对称性:对于任意的引用值x 和 y,当x.equals(y)返回true,y.equals(x)也一定返回true
  *   3 传递性:对于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返   回 true
   * 4 一致性:对于任意的引用值x 和 y,如果用于equals比较的对象信息没有被修改,
   *           多次调用x.equals(y)要么一致地返回true,要么一致地返回false
   *   5 非空性:对于任意的非空引用值x,x.equals(null)一定返回false
   * 
   * 请注意:
   * 重写equals方法后最好重写hashCode方法,否则两个等价对象可能得到不同的hashCode,这在集合框架中使用可能产生严重后果
  */
 
 
 /*
  *  1.重写equals方法修饰符必须是public,因为是重写的Object的方法.
     *  2.参数类型必须是Object.
  */ 
 public boolean equals(Object other){       //重写equals方法,后面最好重写hashCode方法
  
  if(this == other)                                      //先检查是否其自反性,后比较other是否为空。这样效率高
   return true;
  if(other == null)         
   return false;
  if( !(other instanceof Cat))
   return false;
  
  final Cat cat = (Cat)other;
  
  if( !getName().equals(cat.getName()))
   return false;
  if( !getBirthday().equals(cat.getBirthday()))
   return false;
  return true;
 }
 
 public int hashCode(){                 //hashCode主要是用来提高hash系统的查询效率。当hashCode中不进行任何操作时,可以直接让其返回 一常数,或者不进行重写。
  int result = getName().hashCode();
  result = 29 * result +getBirthday().hashCode();
  return result;
  //return 0;
 }

 public static void main(String[] args) {  
  
  Date dayA = new Date(4000000);  
  Cat a = new Cat();
  a.setName("a");
  a.setBirthday(dayA);
  
  Date dayB = new Date(1000000);
  Cat b = new Cat();
  b.setName("a");
  b.setBirthday(dayB);
  
  Date dayC = dayA;
  Cat c = new Cat();
  c.setName("a");
  c.setBirthday(dayC);
  
  Date dayE = dayA;
  Cat e = new Cat();
  e.setName(a.getName());
  e.setBirthday(a.getBirthday());
  
  Date dayD = dayC;
  Dog d = new Dog();
  d.setName("a");
  d.setBirthday(dayD);
  
  System.out.println(a.equals(b));     //调用自己类中所定义的equals方法
  System.out.println(a.equals(a));
  System.out.println(a.equals(c));
  
  System.out.println(d.equals(a));
  System.out.println(a.equals(d));      //验证重写equals的对称性
  System.out.println(a.equals(e));
  System.out.println(e.equals(c));      //验证重写equals的传递性
  System.out.println(d.getName().equals(a.getName()));   //调用Object类中equals方法
  System.out.println(d.getBirthday().equals(b.getBirthday()));
  
  System.out.println("比较hanshCode的值");
  
  /*
   *    * 比较hashCode方法中返回的值
   * 如果equals返回为true,则hashCode一定返回true。
   * 如果equals返回为false,hashCode返回值不一定不相同。
   * 如果hashCode返回值不同,则equals返回值一定为false。
   * 如果hashCode返回值不同,则equals返回值不一定为false。
   */
  System.out.println(a.hashCode());
  System.out.println(b.hashCode());
  System.out.println(a.hashCode()== b.hashCode());    //如果equals返回false,则各hashCode不一定返回不同值
  System.out.println(a.hashCode() == c.hashCode());    
        
 }

}

51单片机也能玩转GC9A01彩屏?超详细移植指南与性能优化技巧 本文详细介绍了如何在51单片机上高效驱动GC9A01彩屏,包括硬件连接优化、SPI模拟驱动、内存管理策略及高级刷新技术。通过分段缓冲、颜色压缩和差异化刷新等技巧,显著提升显示性能,使51单片机也能流畅运行240x240分辨率的彩色TFT屏幕。 阅读详情

相关推荐

/proc/sys/vm/max_map_count耗尽时,调用glibc 2.11.3 free()导致程序crash,问题追踪和解决

1. 问题 在客户环境下,当我们的程序消耗较大内存时,会偶尔crash。 通过gdb分析,程序core dump在malloc/free函数内。 当把/proc/sys/vm/max_map_count 从65530增加到131070,程序再也不crash。 相关命令 echo 131073 > /proc/sys/vm/max_map_count 2.  core

万大胖博客,苦并快乐着 4430

关于java中重写equals方法的细节

 import java.util.Date; class Dog{ private String name; private Date birthday;   public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Date get

liuheqing的专栏 783

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 293

重写类中的equals方法进行过滤使用HashSet

 对类重写equals方法 用hashSet进行过滤必须在类中实现hashCode方法,因为每个hash表都是不相同的,所以,加入set 中就不会调用equals方法的。// public boolean equals(Object obj) {// System.out.println("2222222222222222");// if (obj instanceof AA) {//  AA a

redbednil的专栏 841

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 371

波浪补偿控制(AHC)之波浪发生器(CODESYS完整源代码)

波浪发生器平台详细算法和结构介绍请参看下面博客文章:CODESYS平台如何建立FC和FB,请参看下面博客文章:

RXXW_Dor的博客 403

java 过滤list数据

list.stream().filter(a->a.getNAME().equals("111")).collect(Collectors.toList());过滤数据  

CY的博客 4293

cadence17.4和16.6同时安装无法使用的问题

经过对报错的问题分析,发现还是17.4的lic文件和16.6的不一样,16.6的版本总是无法找到自己对应的lic文件。卸载了,重新单独安装16.6,这里就是正确的。包括使用这些工具去修复这些问题,都无法接近。已经放弃了,使用哪个版本就安装 哪个版本。这个也无法解决问题。

D_Katter的博客 2326

【Java基础】重写equals方法详讲

重写equals方法 【Java比较学习】重写equals方法的安全写法 重写equals方法的两种方式 这里提供两个比较常见的equals重写方法: ● 用instanceof实现重写equals方法 ● 用getClass实现重写equals方法 先说结论,getClass()比instanceof更安全。接下来就是我们自己要来实现equals方法了。 场景描述 假设有此场景: 在已经创建好的长方形类中重写Object类中的equals方法为当长方形的长和宽相等时,返回TRUE,同时重写hashCode

qq_43783527的博客 2万+

【智能车Code review】—曲率计算、最小二乘法拟合

【1】曲率计算函数 选三个点计算曲率 float process_curvity(byte x1, byte y1, byte x2, byte y2, byte x3, byte y3) { float K; int S_of_ABC = ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2; //面积的符号表示方向 byte q1 = (byte)((x2 - x1) * (x2 - x1) + (y2 - y1) *

hanhan的博客 1万+

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.youkuaiyun.com/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

重写hashcode和equals方法时需要注意什么?

参考:Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系 1. hashCode方法: Object类默认的hashCode方法计算出来的是对象的存储地址。使用哈希算法可以显著提升检索效率:正常情况下比较一个集合中是否存在某一个值或对象,采用的方法就是遍历集合,从集合中取出每一个元素并调用equals方法来确认是否相同。当集合大小非常大,该方法的效率其实是很低的。采用哈希算法则可以大大提升定位元素的效率,将数据按特定算法直接分配到不同区域上。将集合分成若干个存储区.

三明治文鱼的博客 1140

【JDK】win 10 / win 11:jdk 8 下载、安装、配置、验证

win10 / win 11:JDK 最新版本下载 / 历史版本下载(jdk 8)、安装、配置系统环境变量、验证安装全详细操作教程

顾三殇 —— 博客空间(软件测试) 13万+

Java中equals()方法重写

Java中的equals()方法是在Object类中定义,Object类是所有类的父类。换句话说,任何类都隐含地继承了该方法。判断两个对象的内容是否相同,必须使用equals()方法,对于没有重写该方法的类,需要重写该方法。重写equals()方法代码如下: /** *equlas()方法重写实例 */ class User { /** *方法描述:设置name值 *输

数据人 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JAVA为什么要重写equals方法?重写了equals方法后为什么要重写hashcode方法?

目录为什么需要重写equals方法? 为什么需要重写equals方法? 比方创建一个Student类,定义了一个全参构造方法 public class Student { private String name; private Integer stuId; public Student(String name, Integer stuId) { this...

weixin_44906271的博客 2209

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JAVA重写equals方法

equals public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; ...

qq_41870790的博客 2086

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java自定义类中重写equals方法

equals方法的要求: a.自反性:对于任何非空的x,x.equals(x)都应该返回true b.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也应该返回true c.传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true d.一致性:如果x和y的...

weixin_44195108的博客 2718

java 重写equals的要点_重写Java中的equals方法介绍

Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型,不论是对象数组,列表等都扩展了Object类.了解学习Object中方法的设计原理和实现方式有助于更好的学习理解java语言.下面,我们首先学习一下Object中的equals方法. 判断两个对象相等...

weixin_30689519的博客 220

java 中 重写equals方法的用处

以前只是在学习java的时候遇到了equals方法,对于重写equals有什么用是一点也不清楚,今天在项目在做比对的时候出了问题, 就试着重写了equals方法,结果就解决了问题。 在开发的时候,经常用到实体类,一般都会这么写public class MsgDetailsBean { private String types, content, createtime; public

Huxq的博客 4350

java 重写equals_java重写equals方法需要注意

为什么equals()方法要重写?判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法。怎样重写equals()方法?重写e...

weixin_28877107的博客 198

Java 细品 重写equals方法 和 hashcode 方法

前言 在我们需要比较对象是否相等时,我们往往需要采取重写equals方法和hashcode方法。 该篇,就是从比较对象的场景结合通过代码实例以及部分源码解读,去跟大家品一品这个重写equals方法和hashcode方法。 正文 场景: 我们现在需要比较两个对象 Pig 是否相等 。 而Pig 对象里面包含 三个字段, name,age,nickName ,我们现在只需要认为如果两个pig对象的name名字和age年龄一样,那么这两个pig对象就是一样的,nic...

默默不代表沉默 6214

Java 如何重写对象的 equals 方法和 hashCode 方法

对类中每一个重要字段,也就是影响对象的值的字段,也就是 equals 方法里有比较的字段,进行以下操作:a. 计算这个字段的值 filedHashValue = filed.hashCode();其实当 equals 方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。既然比较两个对象是否相等,使用的是 equals 方法,那么只要重写了 equals 方法就好了,干嘛又要重写 hashCode 方法呢?

2401_89224864的博客 1253

java equals方法重写和hashcode方法总结

JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现(重写覆盖了原来的),而不再是比较类在堆内存中的存放地址了。      equals方法,比较两个对象是否相等,比较的是地址(初始)和值...

299

java重写equals方法时,为什么还需要重写hashCode

在说这个问题之前,先说下equals和hashCode各自的作用 equals: 判断两个对象是否相等所调用的方法。 public boolean equals(Object obj) { return (this == obj); } 瞜一眼java的Object类的equals方法代码,很明显这个方法是比较两个对象的地址是否相等 hascode: 我也不知道这个方法有啥作用,咱们姑且算它是返回当前对象的唯一code码吧。可以理解为数据库表的主键 public

码眼的博客 908

Java重写object类的equals方法

1.Object类的equals()方法: 比较两个对象是否是同一个对象,equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。是则返回true Object类是所有类的父类,它的equals方法自然会被所有类继承,有一个子 类String对equals方法进行了覆盖(重写),使其具有了新功能 2.Object类的equals()方法与==没区别 Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值

weixin_48369654的博客 2567

java map 重写equals_java-强制一个类重写.equals方法

java-强制一个类重写.equals方法我有一堆实现通用接口的类:命令。这节课去了一张地图。为了使Map正常工作,我需要实现Command的每个类都重写Object.equals(Object other)方法。没关系。但是我想强迫平等。 =>当执行命令的某些对象不覆盖相等时,发生编译错误。那有可能吗?编辑:顺便说一句,我还需要强制覆盖哈希码...12个解决方案83 votes不,你不能。...

weixin_36221980的博客 705
上一篇: Ajax跨域问题研究笔记
下一篇: 如何使用Java List等集合类的removeAll方法
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值