下面给出一个属性不同但哈希码相同的例子:

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方法相关推荐

  1. java重写6,java重写equals()方法和hashCode()方法

    1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...

  2. HashSet要重写equals方法和hashCode方法

    注:重要笔记在代码中注释有 hashSet去重: 即判断两个对象是否相等 1:会先调用对象的hashCode方法获得hash的值,如果set中哈希表里面没有对应的hash值,则将次对象存入set中 2 ...

  3. JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法

    在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address {privat ...

  4. Java equals()方法和hashCode()方法

    equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了"逻辑相等"的测试功能. 3 父类已 ...

  5. Java基础语法:重写equals方法和hasCode方法

    目录 一.为什么需要重写equals和hasCode方法 二.equals和hasCode解读 1.equals方法 2.hasCode方法 三.重写 四.参考资料 一.为什么需要重写equals和h ...

  6. 普歌-码灵团队-java中的equals方法和toString方法及总结

    普歌-码灵团队:Object类中的方法介绍及其用法 一.Object类 二.方法介绍 1.toString方法 2.重写equals方法: 3. 拓展 三.总结 一.Object类的简单介绍 二.Ob ...

  7. 为什么要重写toString()方法和hashcode()方法

    一.toString(): 在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个hashcode码不能简单明了的表示出对象的属性.所以要重写toString()方法. ...

  8. java 创建对象的init_Java 对象创建过程。init 方法和 clinit方法。

    Java 对象创建过程 判断是否加载.分配内存(指针碰撞或者空闲链表).初始化为零值.设置对象头(实例是哪个类的实例.类的元信息位置.GC 分代年龄等).init 方法. Java 虚拟机创建一个对象 ...

  9. asp.net TemplateField模板中的Bind方法和Eval方法

    TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现.以下是Bind方法的格式,Eval的格式也是和Bind一样的. Bind("列 ...

最新文章

  1. STN pytorch实现
  2. ARM汇编学习之寄存器 之PC
  3. 他们拿走腾讯广告百万奖金,我算是知道票圈广告为啥那么多赞了
  4. python代码块所属关系的语法-天元高校邦数据科学通识课【Python基础语法】答案...
  5. VTK:可视化之FrogSlice
  6. UVA1493 - Draw a Mess(并查集)
  7. 高级Java面试题,你敢挑战吗?
  8. 【BZOJ3105】新Nim游戏,线性基+贪心
  9. 磊科全功能路由器上网行为管理配置指南 -- 路由器
  10. 7款流程图制作软件大盘点!轻松绘制流程图
  11. Couldn‘t resolve host
  12. InsightFace-Paddle实现人脸比对
  13. nvm安装成功后npm命令'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  14. PON系统向单波速率25G演进
  15. python05元组字典
  16. matlab中弹性碰撞课程设计,仿真动画软件设计作品--物体完全弹性碰撞*
  17. 30天自制操作系统——第十五天实现多任务(一)
  18. 2022-2028中国ITX电脑机箱市场现状研究分析与发展前景预测报告
  19. 打麻将技巧测试软件apk,打麻将技巧学习,记住这10句打麻将技巧,让你稳赢不输...
  20. 解决百度文库及其他网站无法复制现象

热门文章

  1. 必看!程序员逃生指南!
  2. Linux 在 soft lockup 时,可以远程调试吗?
  3. iPhone 12 或10月13日发布;微信支付正计划加码存款市场;Swift正式登陆Win 10 | 极客头条
  4. 「AI原生」时代来临?百度智能云提出AI-Native,发布新一代云基础架构「太行」
  5. 华为回应申请大量“鸿蒙”商标;5G第一个演进版本标准正式完成;SUSE 收购 Rancher Labs| 极客头条
  6. 20 位行业专家共话选型经验,CSDN「选型智囊团高端研讨会」圆满落幕!
  7. 收藏!Java 500 道核心面试题全解析
  8. 我用 Python 破解了同事的加密压缩包!
  9. 深度学习难?学完它,拿高薪绝对不是问题
  10. 程序员如何借助 AI 开挂股票神预测?| 技术头条