什么情况下需要重写呢?

比如去重操作时,

有时候往Set集合存放对象User,我们User类的字段太多时,比如有50个字段,

判断两个User对象相同,不需要判断它们所有字段都相同,只需要判断它们的某几个字段相同,就定为它们俩相同,

这时候需要重写Equals()方法,也要重写HashCode()方法,

public class User {
private String name;
private int age;
private String passport;
//getters and setters, constructor @Override
public boolean equals(Object o) {
if (o == this)
return true;
if (o ==null)
return false;
if (!(o instanceof User)) {
return false;
}
User user = (User) o;
return user.name.equals(name) &&
user.age == age &&
user.passport.equals(passport);
} //这种17和31散列码的想法来自经典的Java书籍——《Effective Java》第九条
@Override
public int hashCode() {
int result = 17;
result = 31 * result + name.hashCode();
result = 31 * result + age;
result = 31 * result + passport.hashCode();
return result;
}
}

  

在Equals()方法和HashCode()方法中,

判断哪几个字段重复,就定为对象相同

  

重写equals() 和 hashCode()方法的更多相关文章

  1. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  2. 为什么要重写equals和hashcode方法

    equals hashcode  当新建一个java类时,需要重写equals和hashcode方法,大家都知道!但是,为什么要重写呢? 需要保证对象调用equals方法为true时,hashcode ...

  3. 如何正确的重写equals() 和 hashCode()方法

    比较两个Java对象时, 我们需要覆盖equals和  hashCode. public class User{ private String name; private int age; priva ...

  4. 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例

    原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 感谢网友的分享,记录下来只为学习. 1.重写equals方法实例   部分代码参考http ...

  5. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例

    1.重写equals方法实例   部分代码参考http://blog.csdn.net/wangloveall/article/details/7899948 重写equals方法的目的是判断两个对象 ...

  6. java重写equals和hashCode方法

    一.重写equals方法 如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等. 利用equals比较八大包装对象(如int,f ...

  7. 内存泄漏避雷!你真的了解重写equals()和hashcode()方法的原因吗?

    基本概念 要比较两个对象是否相等时需要调用对象的equals() 方法: 判断对象引用所指向的对象地址是否相等 对象地址相等时, 那么对象相关的数据也相等,包括: 对象句柄 对象头 对象实例数据 对象 ...

  8. 重写equals()与hashCode()方法

    出自:http://blog.csdn.net/renfufei/article/details/16339351 Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类.Oj ...

  9. List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

    1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...

随机推荐

  1. group by 显示

    public static void PrintPersons()         {             //准备数据             DataTable dt = new DataTa ...

  2. OnSen UI结合AngularJs打造”美团"APP"附近”页面 --Hybrid App

    1.页面效果图: 演示链接地址:http://www.nxl123.cn/bokeyuan/meiTuanDemo_near/ 2.核心代码 near.html: <ons-page id=&q ...

  3. pip3 install requests Cannot open D:\Python35\Scripts\pip3-script.py

    1.问题描述: 使用pip(或pip3)指令安装模块时,出现了Cannot open D:\Python35\Scripts\pip3-script.py的报错信息 2.原因分析: pip安装出错 3 ...

  4. 20170912多线程Python爬取图片

    import threading #导入线程 from urllib import request #导入网页请求模块 import re #导入正则表达式模块 import os # 引入模块 fr ...

  5. CentOS7 搭建LVS+keepalived负载均衡

    1.实验环境 4台节点 Keepalived1 + lvs1(Director1):192.168.31.4 Keepalived2 + lvs2(Director2):192.168.31.3 Re ...

  6. Beta阶段——第6篇 Scrum 冲刺博客

    Beta阶段--第6篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成了函数的编写,提供报表数 ...

  7. GIS入门基础知识点

    自从国企辞职以后,找了一份关于GIS开发的工作,好多从事这个都是地理信息科学方面的专业.由于自己才疏学浅,只能从头入门学起,先是大致了解公司的业务以及产品,学习一下相关地理信息的基础知识. 首先今天简 ...

  8. 二十二、Spring MVC与Structs2的区别总结

    一.框架的入口 1.Structs2采用Filter(StructsPrepartAndExecuteFilter)来进行实现. 2.SpringMVC采用Servlet(DispatcherServ ...

  9. C++ leetcode::two sum

    上完C++的课就在也没用过C++了,最近要找实习,发现自己没有一门语言称得上是熟练,所以就重新开始学C++.记录自己从入门到放弃的过程,论C++如何逼死花季少女. 题目:Given an array ...

  10. Spring循环依赖

    Spring-bean的循环依赖以及解决方式 Spring里面Bean的生命周期和循环依赖问题 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环. ...