博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重写equals()方法和 hashCode()方法
阅读量:6220 次
发布时间:2019-06-21

本文共 1195 字,大约阅读时间需要 3 分钟。

java中判断两个对象是否相等的规则:

首先,判断两个对象的hashCode是否相等 
如果不相等,认为两个对象也不相等 
如果相等,则判断两个对象用equals运算是否相等 
如果不相等,认为两个对象也不相等 
如果相等,认为两个对象相等 
我们在equals方法中需要向下转型,效率很低,所以先判断hashCode方法可以提高效率。
equals()相等的两个对象,hashcode()一定相等; 
equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。

1,所有Java类都继承自Object类

2,Object类中有
public int hashCode(){}
public boolean equals(Object obj){}
这两个方法及其他的方法。
在Object类中,equls()方法和==的本质是相同的,都是判断两个引用是否指向同一对象。
String类继承自Object类:但String类重写了equals()方法,
使得:equals()方法的作用是比较两个字符串的内容是否相等;
==的作用是比较两个引用是否指向同一个对象;
很多类都重写了equals方法,供自己产生新的定义。
3,在本程序中:Items类继承自Object类,并且重写了equals()方法,不按照父类的比较方法来比较两个对象,使得该方法能够按照程序员自己的意愿来比较两个对象

@Items.java//解决编号没有合并问题@Overridepublic int hashCode() {    //若getId和getName相同,则hashCode一定相同    return this.getId()+this.getName().hashCode();}@Overridepublic boolean equals(Object obj) {    // TODO Auto-generated method stub    if(this==obj)    {        return true;    }    if(obj instanceof Items)    {        Items i = (Items)obj;        if(this.getId()==i.getId()&&this.getName().equals(i.getName()))        {            return true;        }        else        {            return false;        }    }    else    {        return false;    }}

 

转载于:https://www.cnblogs.com/kkkore/p/5506785.html

你可能感兴趣的文章
顺序容器
查看>>
asp 短信接口 解决产生的乱码问题
查看>>
AngularJS开发指南9:AngularJS作用域的详解
查看>>
Ajax:动态更新Web页面
查看>>
Iphone开发(四)文本框,文本视图,和软键盘的隐藏
查看>>
数据库结构设计注意
查看>>
iOS: Core Data入门
查看>>
swf相关开源的工具
查看>>
百度地图3.1.0(一)Hello BaiduMap
查看>>
Java设计模式--责任链模式
查看>>
Zenefits CodeSprint:Knight or Knave
查看>>
网络通信协议、UDP与TCP协议、UDP通信、TCP通信
查看>>
Ogg - 从oracle到mysql的同步
查看>>
js中判断对象类型的几种方法
查看>>
grep多条件和sed合并两行
查看>>
iOS 之 时间格式与字符串转换
查看>>
js导出CSV
查看>>
转:Linux中find命令-path -prune用法详解
查看>>
团队编程项目作业3-模块测试过程
查看>>
Java基本数据类型及其封装器的一些千丝万缕的纠葛
查看>>