java中重写hashcode_Java中HashSet要重写equals方法和hashCode方法
下面给出一个属性不同但哈希码相同的例子:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class Person {
private String name;
private int id;
Person(String name,int id) {
this.name = name;
this.id = id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public int hashCode(){
return name.hashCode()+id; //使用字符串哈希值与Integer的哈希值的组合
//这样会产生重码,实际上重码率很高
}
public boolean equals(Object obj){
if(obj instanceof Person){ //
Person p = (Person)obj;
return(name.equals(p.name) && id == p.id);
}
return super.equals(obj);
}
}
public class TestHashSet2 {
public static void main(String[] args) {
Person p1 = new Person("a",1);
Person p2 = new Person("b",0);
Set set = new HashSet();
set.add(p1);
set.add(p2);
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next().getName());
}
}
}
java中重写hashcode_Java中HashSet要重写equals方法和hashCode方法相关推荐
- java重写6,java重写equals()方法和hashCode()方法
1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...
- HashSet要重写equals方法和hashCode方法
注:重要笔记在代码中注释有 hashSet去重: 即判断两个对象是否相等 1:会先调用对象的hashCode方法获得hash的值,如果set中哈希表里面没有对应的hash值,则将次对象存入set中 2 ...
- JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address {privat ...
- Java equals()方法和hashCode()方法
equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了"逻辑相等"的测试功能. 3 父类已 ...
- Java基础语法:重写equals方法和hasCode方法
目录 一.为什么需要重写equals和hasCode方法 二.equals和hasCode解读 1.equals方法 2.hasCode方法 三.重写 四.参考资料 一.为什么需要重写equals和h ...
- 普歌-码灵团队-java中的equals方法和toString方法及总结
普歌-码灵团队:Object类中的方法介绍及其用法 一.Object类 二.方法介绍 1.toString方法 2.重写equals方法: 3. 拓展 三.总结 一.Object类的简单介绍 二.Ob ...
- 为什么要重写toString()方法和hashcode()方法
一.toString(): 在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个hashcode码不能简单明了的表示出对象的属性.所以要重写toString()方法. ...
- java 创建对象的init_Java 对象创建过程。init 方法和 clinit方法。
Java 对象创建过程 判断是否加载.分配内存(指针碰撞或者空闲链表).初始化为零值.设置对象头(实例是哪个类的实例.类的元信息位置.GC 分代年龄等).init 方法. Java 虚拟机创建一个对象 ...
- asp.net TemplateField模板中的Bind方法和Eval方法
TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现.以下是Bind方法的格式,Eval的格式也是和Bind一样的. Bind("列 ...
最新文章
- STN pytorch实现
- ARM汇编学习之寄存器 之PC
- 他们拿走腾讯广告百万奖金,我算是知道票圈广告为啥那么多赞了
- python代码块所属关系的语法-天元高校邦数据科学通识课【Python基础语法】答案...
- VTK:可视化之FrogSlice
- UVA1493 - Draw a Mess(并查集)
- 高级Java面试题,你敢挑战吗?
- 【BZOJ3105】新Nim游戏,线性基+贪心
- 磊科全功能路由器上网行为管理配置指南 -- 路由器
- 7款流程图制作软件大盘点!轻松绘制流程图
- Couldn‘t resolve host
- InsightFace-Paddle实现人脸比对
- nvm安装成功后npm命令'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- PON系统向单波速率25G演进
- python05元组字典
- matlab中弹性碰撞课程设计,仿真动画软件设计作品--物体完全弹性碰撞*
- 30天自制操作系统——第十五天实现多任务(一)
- 2022-2028中国ITX电脑机箱市场现状研究分析与发展前景预测报告
- 打麻将技巧测试软件apk,打麻将技巧学习,记住这10句打麻将技巧,让你稳赢不输...
- 解决百度文库及其他网站无法复制现象
热门文章
- 必看!程序员逃生指南!
- Linux 在 soft lockup 时,可以远程调试吗?
- iPhone 12 或10月13日发布;微信支付正计划加码存款市场;Swift正式登陆Win 10 | 极客头条
- 「AI原生」时代来临?百度智能云提出AI-Native,发布新一代云基础架构「太行」
- 华为回应申请大量“鸿蒙”商标;5G第一个演进版本标准正式完成;SUSE 收购 Rancher Labs| 极客头条
- 20 位行业专家共话选型经验,CSDN「选型智囊团高端研讨会」圆满落幕!
- 收藏!Java 500 道核心面试题全解析
- 我用 Python 破解了同事的加密压缩包!
- 深度学习难?学完它,拿高薪绝对不是问题
- 程序员如何借助 AI 开挂股票神预测?| 技术头条