文档章节

使用EqualsBuilder和HashCodeBuilder重写equals、hashCode方法

走位风骚闪着腰
 走位风骚闪着腰
发布于 2014/08/31 22:49
字数 226
阅读 2851
收藏 2
--
package com.osc.demo;

import java.util.List;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

public class Teacher {
	private String name;
	private int age;
	private List<Student> student;

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public List<Student> getStudent() {
		return student;
	}

	public void setStudent(List<Student> student) {
		this.student = student;
	}

	@Override
	public boolean equals(Object obj) {
		return EqualsBuilder.reflectionEquals(this, obj);
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}
}
--
package com.osc.demo;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

public class Student {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public boolean equals(Object obj) {
		return EqualsBuilder.reflectionEquals(this, obj);
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}
}
--
package com.osc.demo;

import java.util.ArrayList;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		Student studentOne = new Student();
		studentOne.setName("张柏芝");
		studentOne.setAge(34);
		List<Student> listOne = new ArrayList<Student>();
		listOne.add(studentOne);
		Teacher teacherOne = new Teacher();
		teacherOne.setName("陈冠希");
		teacherOne.setAge(33);
		teacherOne.setStudent(listOne);

		Student studentTwo = new Student();
		studentTwo.setName("张柏芝");
		studentTwo.setAge(34);
		List<Student> listTwo = new ArrayList<Student>();
		listTwo.add(studentTwo);
		Teacher teacherTwo = new Teacher();
		teacherTwo.setName("陈冠希");
		teacherTwo.setAge(33);
		teacherTwo.setStudent(listTwo);

		System.out.println(teacherOne == teacherTwo);
		System.out.println(teacherOne.equals(teacherTwo));
	}
}

--

false
true

© 著作权归作者所有

走位风骚闪着腰

走位风骚闪着腰

粉丝 33
博文 33
码字总数 6628
作品 0
合肥
程序员
私信 提问
JavaApi写Spark程序reduceByKey后没有聚合的问题(自定义类型作为Key)

使用JavaApi写Spark如果PairRDD的key值为自定义的类型,需要重写hashcode以及equals方法,不然就会发现相同的Key值并没有进行聚合操作。 例如:使用User类型作为Key 一般eclipse可以自动的生...

那年的暖风
2018/10/25
0
0
嵌入式主键@EmbeddedId

用于定义复合主键 方法1: (1)编写一个嵌入式主键的类testPK 作为嵌入式主键类,要满足以下几点要求。 1.必须实现Serializable接口、必须有默认的public无参数的构造方法、必须覆盖equals ...

赵小宾
2014/03/26
0
0
commons 工具类使用mark

commons-lang3包中对我们有用的类主要有: 1.StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,去空白,去掉非法字符等等操作 2.ObjectUtils 主要是对n...

真爱2015
2016/01/07
16
0
commons-lang包中我们常用的类的作用

commons-lang 包中我们常用的类的作用 1.StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,去空白,去掉非法字符等等操作 2.ObjectUtils 主要是对nul...

zy0600
2017/01/22
0
0
如何生成一个合适的hashcode方法

Hashcode在基于key-value的集合如:HashMap、LinkedHashMap中扮演很重要的角色。此外在HashSet集合中也会运用到,使用合适的hashcode方法在检索操作时的时间复杂度最好的是 O(1). 一个差劲的...

LCZ777
2014/03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
15
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
10
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
14
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部