Java重写equals方法实现去重
来源:互联网 发布:天津鹏为软件 编辑:程序博客网 时间:2024/06/05 22:39
我们经常会遇到一些业务,要对数据进行去重,我们可能首先想到的就是重写equals方法,但是结果却不尽人意,这是为啥呢?其实还需要重写hashCode方法,因为光重写equals方法是不够的
package com.eicky;public class Test { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (obj == null){ return false; } if (this == obj){ return true; } if (obj instanceof Test){ Test o = (Test) obj; return this.id == o.id; } return false; } @Override public int hashCode() { return id; } /** * 这个是考虑到如果id是Integer类型的时候,没有具体值的时候就使用里面字符串的hashCode *我们知道Java所有的类都是继承Object的,所有的类也都继承了Object的方法和属性 * eg: toString()、hashCode()、equals()等 */ //@Override //public int hashCode() { // return name.hashCode(); //}}
啰嗦几句:
当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true
当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false
重写这两个方法的作用就是为了去重,方式就不用多说了吧(Set什么的都能玩).
我们默认的去比对是否相同是比对的地址,而重写这两个方法就相当于比较两个对象是否相同就是去比对对象里面的内容
1 0
- Java重写equals方法实现去重
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- JAVA重写equals方法
- JAVA重写equals方法
- java 重写equals方法
- Java重写equals方法
- Java重写equals()方法
- java 重写equals()方法
- Java重写equals方法
- java 重写equals方法
- java中重写equals方法
- java中重写equals方法
- java中equals重写方法
- Java中equals()方法重写
- java中重写equals方法
- java中重写equals方法
- JAVA equals()方法重写
- java中重写equals方法
- ORA-01012: not logged on 解决办法
- java发送http的get、post请求2
- Java Bindings Metadata翻译
- Ancient Go
- atexit函数介绍
- Java重写equals方法实现去重
- tf_prefix的理解
- 跟我学JavaScript--typeof,null,undefined
- 继承一之继承方式
- 最长公共子序列(LCS)
- 使用遗传算法实现迷宫游戏(genetic maze)
- BindService()
- 移植lmdb到hi3519
- SpringMVC<from:form>表单标签和<input>表单标签简介