Java重写equals方法和hashCode方法
package com.ddy;
public class User {
    private Integer id;
    private String name;
    private String address;
    private String phone;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address == null ? null : address.trim();
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }
    public User(Integer id) {
        super();
        this.id = id;
    }
    
} 
Person根据id重写了equals和hashCode方法;这样HashSet添加people的时候会将id重复的people对象视为同一个people对象。
package com.ddy;
import java.util.HashSet;
import java.util.Set; public class Test {
public static void main(String[] args) {
User user1 = new User(1);
User user2 = new User(1);
Set<User> users = new HashSet<>();
users.add(user2);
users.add(user1);
System.out.println(users);
}
}
输出结果:[com.ddy.User@20]
Java重写equals方法和hashCode方法的更多相关文章
- HashSet中存方用户自己定义数据类型数据,重写equals方法和hashCode方法
		import java.util.Set; import java.util.HashSet; public class SetTest { public static void main(Strin ... 
- java中equals方法和hashcode方法的区别和联系,以及为什么要重写这两个方法,不重写会怎样
		一.在Object类中的定义为:public native int hashCode();是一个本地方法,返回的对象的地址值.但是,同样的思路,在String等封装类中对此方法进行了重写.方法调用得到 ... 
- JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
		在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address { priva ... 
- Hibernate中为什么要重写equals方法和hashcode方法
		1.*为什么要重写equals方法,首先我们来看一下equals源码: public boolean equals(Object anObject) { if (this == anObject) { ... 
- 对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法
		对象作为 map 的 key 时,需要重写 hashCode 和 equals方法 如果没有重写 hashCode 方法,那么下面的代码示例会输出 null 我们首先定义一个对象:BmapPoint, ... 
- HashSet中的元素必须重写equals方法和hashCode方法
		http://jingyan.baidu.com/article/d5a880eb8fb61d13f147cc99.html 1.为什么必须重写这两个方法. 2.什么事hashSet去重,符合什么样的 ... 
- 关于Object类的equals方法和hashCode方法
		关于Object类的equals的特点,对于非空引用: 1.自反性:x.equals(x) return true : 2.对称性:x.equals(y)为true,那么y.equals(x)也为tr ... 
- Java 如何重写对象的 equals 方法和 hashCode 方法
		前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31.接下来看看各种为什么. 一.需求: 对比两个对 ... 
- Java基础系列-equals方法和hashCode方法
		原创文章,转载请标注出处:<Java基础系列-equals方法和hashCode方法> 概述 equals方法和hashCode方法都是有Object类定义的. publi ... 
随机推荐
- codevs 2600 13号星期几?
			时间限制: 1 s 空间限制: 8000 KB 题目等级 : 黄金 Gold 题目描述 Description 从1900年1月1日(星期一) 开始经过的n年当中,每个月的13号这一天是星期一.星 ... 
- EF为什么向我的数据库再次插入已有对象?(ZT)
			最近做了个多对多对实体对象,结果发现每次只要增加一个子实体,就会自动添加一个父实体进去,而不管该父实体是否已经存在. 找了好久,终于找到这篇文章,照文章内容来看,应该是断开连接导致的. 原文地址:ht ... 
- 微信小程序开发系列一:微信小程序的申请和开发环境的搭建
			我最近也刚刚开始微信小程序的开发,想把我自学的一些心得写出来分享给大家. 这是第一篇,从零开始学习微信小程序开发.主要是小程序的注册和开发环境的搭建. 首先我们要在下列网址申请一个属于自己的微信小程序 ... 
- SQLite与MySQL、SQLServer等异构数据库之间的数据同步
			SQLite DBSync是开源嵌入式数据库SQLite的数据同步引擎,实现了SQLite与SQLite数据库之间以及SQLite与异构数据库(Oracle.MySQL.SQLServer)之间的增量 ... 
- es 集群部署
			下载 [root@localhost ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1 ... 
- cocos creator 小记
			一个游戏场景有若干个节点组成,这些包括渲染节点,UI节点. 这里弱化了Layer层的概念. 一个游戏由若干个场景组件. 每个节点由若干个组件和若干子节点组成. 例如UI节点中的 按钮节点.子节点有 ... 
- 转--C#编程总结
			C#编程总结--总目录 http://www.cnblogs.com/yank/p/3543423.html 
- PHP15 Smarty模板
			学习目标 Smarty基本概念 Smarty安装和配置 Smarty模板设计 Smarty流程控制 Smarty基本概念 一种模板引擎,在系统中进行预处理和过滤数据.是主流的PHP模板引擎,此外PHP ... 
- 《3+1团队》【Alpha】Scrum meeting 2
			项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ... 
- 洛谷P1035 级数求和
			#include <iostream> using namespace std; int main(){ long k,i; cin >> k; double s=0.0; ; ... 
