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

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. Linux下PDF操作与转换
  2. ASP.NET Core MVC – Form Tag Helpers
  3. 文本查询TextQuery类文件编写
  4. dubbo kryo序列化_为什么如此高效?解密kryo各个数据类型的序列化编码机制,强...
  5. python分行打印list_python怎么打印list-问答-阿里云开发者社区-阿里云
  6. WPF下字体模糊的问题
  7. poj Shortest Prefixes ——trie树、字典树,基础!!
  8. linux显示防火墙端口命令,Linux查询端口是否被防火墙屏蔽 firewall-cmd命令用法
  9. 离散数学太多符号了_离散数学符号大全
  10. 监控提示服务器状态变更,服务器故障排除与状态监控
  11. python小项目实战my--电子词典
  12. 一文整理总结常见Java后端面试题系列——Spring篇(2022最新版)
  13. MAC系统查看端口,并关闭端口占用
  14. セルジュ / Serge
  15. 汽车转向前后轮轨迹matlab程序,车前进后退方向的口诀,动画图解车前后轮转弯轨迹...
  16. 2020.11.10课堂笔记(Apache Spark 分布式计算原理)
  17. 手机投屏到电脑_低延迟,传声音
  18. 修复树莓派鼠标移动缓慢迟滞问题
  19. 八零后月薪56K老程序员感慨人生的起起伏伏,跳槽居然没地方让我跳!
  20. Vue系统指令(一)

热门文章

  1. 商汤携手迅达,全面打造“AI+电梯“,实现全流程安全智能自动化管理
  2. 新荣耀员工现金补偿最高可拿 N+5;天津立法禁止采集人脸识别信息;IntelliJ IDEA 新版发布|极客头条...
  3. 知乎 Hive Metastore 实践:从 MySQL 到 TiDB
  4. “原本我不会在拼多多购物,但它补贴实在太多了”
  5. 陆奇、雷军、熊晓鸽聊疫情后的创业风口
  6. 跟风 Google 只是东施效颦?!
  7. 推荐系统如何一键实现工业级部署? ElasticCTR 百度开讲
  8. 多种方式创建 Entity Framework Core 上下文
  9. “Scrum 敏捷开发都是骗人的!”
  10. 程序员如何借助 AI 开挂股票神预测?| 技术头条