作者Jnaive (嘿嘿)
看板java
标题Re: 关於HashSet 加入重覆物件却成功加入的问题
时间Thu Apr 27 17:23:19 2006
※ 引述《Bluesky7 ()》之铭言:
: class A{
: int a=0;
: public A(int va){a=va;}
: public boolean equals(Object o){
: A m=(A)o;
: return (a==o.a);
: }
: public String toString(){...return a 的String}
: }
: class test{
: main(String[] argc)
: {
: HashSet<A> set= new HashSet<A>();
: set.add(new A(1));
: set.add(new A(2));
: System.out.println(set);
: }
: }
: 结果印出来是 [1, 2] 第二次被成功加入了
: 可是SUN 的 Spec上明明定义set 重复的不会加入
: More formally, adds the specified element, o, to this set if this set
: contains no element e such that (o==null ? e==null : o.equals(e)).
: 可是现在看来 好像只有把address相同的才看成一样 可是我的equals也overrinding了
: 也测过没错
: 我哪里弄错了吗
: 请教板友 谢谢
在head first java 那本书上看到过这问题
class A 还需要overrinding过另一个hashCode()这个method
物件相等,似乎是先检查物件的hashCode,然後才呼叫equal
都相等,才算物件相等
不是很确定…有错请指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.2.170