黑马程序员技术交流社区

标题: Set集合的 问题 [打印本页]

作者: Teresa    时间: 2015-4-12 22:38
标题: Set集合的 问题
重写了equals与hashcode方法之后,equals的返回值一定是true么。

作者: 星之钥匙    时间: 2015-4-12 22:44
这是我的一个学生类的对象的重写方法,可以给你参考一下
  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. }
复制代码

作者: 怀念子龙    时间: 2015-4-13 09:00
重写就是自己写方法啊。按照自己的想法写,你甚至写成猫和狗相等都可以,虽然这样没什么意义。
作者: 黑色救护车    时间: 2015-4-13 11:25
不一定的。Set集合调用equals方法的前提是hashCode返回了0;那么就看equals的返回值,如果true,说明两个对象完全相同;返回false,说明两个对象还是不同的。
作者: 杨大萌    时间: 2015-4-13 11:34
equals方法返回值最好是int类型,表示,大于,等于,还是小于,用于排序的。
作者: 侯永凯    时间: 2015-4-13 21:42
重写的方法中来确定你要满足的条件
作者: lf027    时间: 2015-4-13 21:54
不一定的。Set集合调用equals方法的前提是hashCode返回了0;那么就看equals的返回值,如果true,说明两个对象完全相同;返回false,说明两个对象还是不同的。


这个解答挺好的
作者: wym1994    时间: 2015-4-13 22:14
Hashcode把对象的所有成员变量值相加。如果是基本类型,就加值。如果是引用类型,就加哈希值。比较的是哈希值 当哈希值相同的情况下 允许内容不同 所以重写equals方法以后 比较2个的值 仍然有可能不相同 例如如下例子就是哈希值相同而内容不同的例子:'GA8Mfaaa', 'e4R5Blaa', 'Y92RLlaa', 'sCvEytaa', 'ydDspvaa','ofLCCCaa', 'uemC0Daa', 'CbgFKKaa', 'd0XRbNaa', 'hUzU9Saa'





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2