A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Teresa 中级黑马   /  2015-4-12 22:38  /  504 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重写了equals与hashcode方法之后,equals的返回值一定是true么。

7 个回复

正序浏览
Hashcode把对象的所有成员变量值相加。如果是基本类型,就加值。如果是引用类型,就加哈希值。比较的是哈希值 当哈希值相同的情况下 允许内容不同 所以重写equals方法以后 比较2个的值 仍然有可能不相同 例如如下例子就是哈希值相同而内容不同的例子:'GA8Mfaaa', 'e4R5Blaa', 'Y92RLlaa', 'sCvEytaa', 'ydDspvaa','ofLCCCaa', 'uemC0Daa', 'CbgFKKaa', 'd0XRbNaa', 'hUzU9Saa'

评分

参与人数 1黑马币 +20 收起 理由
IcedCoffee + 20 很给力!

查看全部评分

回复 使用道具 举报
lf027 中级黑马 2015-4-13 21:54:58
7#
不一定的。Set集合调用equals方法的前提是hashCode返回了0;那么就看equals的返回值,如果true,说明两个对象完全相同;返回false,说明两个对象还是不同的。


这个解答挺好的
回复 使用道具 举报
重写的方法中来确定你要满足的条件
回复 使用道具 举报
equals方法返回值最好是int类型,表示,大于,等于,还是小于,用于排序的。
回复 使用道具 举报
不一定的。Set集合调用equals方法的前提是hashCode返回了0;那么就看equals的返回值,如果true,说明两个对象完全相同;返回false,说明两个对象还是不同的。
回复 使用道具 举报
重写就是自己写方法啊。按照自己的想法写,你甚至写成猫和狗相等都可以,虽然这样没什么意义。
回复 使用道具 举报
这是我的一个学生类的对象的重写方法,可以给你参考一下
  1. public boolean equals(Object obj) {
  2.         if (this == obj)
  3.                 return true;
  4.         if (obj == null)
  5.                 return false;
  6.         if (getClass() != obj.getClass())
  7.                 return false;
  8.         Student other = (Student) obj;
  9.         if (name == null) {
  10.                 if (other.name != null)
  11.                         return false;
  12.         } else if (!name.equals(other.name))
  13.                 return false;
  14.         return true;
  15. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马