作者superlubu (叔叔你人真好)
看板java
标题Re: [问题] HashMap: 使用自定类别当作key
时间Fri May 22 16:22:16 2009
※ 引述《hstt ()》之铭言:
: public boolean contains(String s){return x == s || y == s;}
: @Override public boolean equals(Object o){
: if(o == null)
: return false;
: Pair p = ((Pair)o);
: return p.contains(x) && p.contains(y);
: }
: @Override public int hashCode(){
: return x.hashCode() + y.hashCode();
: }
: }
撇开 == 和 equals 的方法不谈... 其实你的 algorithm 也很有问题的
试看以下的 test code:
public static void main(String[] argv) {
HashMap<Pair, Integer> hm = new HashMap<Pair, Integer>();
Pair p1 = new Pair(new String("s"), new String("p")),
p2 = new Pair(new String("p"), new String("s")),
p3 = new Pair(new String("nX"), new String("mw")),
p4 = new Pair(new String("mw"), new String( "mw" ));
hm.put(p1, 1);
System.out.println(hm.keySet().contains(p2));
hm.put(p3, 2);
System.out.println(hm.keySet().contains(p4));
}
列印的结果,会是 true 和 true
要说为什麽咧?!!!! ┌(○□○)╭
就是你今天的作业了 (~^O^~)
.... 我好坏... XD
--
《为了要得到真相,就要向原 PO 伸图》
那就是伸图魔人的没图没真相原则,那时我们坚信那就是逼逼死的真实
靠么,图咧?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 147.8.127.102
1F:推 hstt:感谢您的指正 不过是我没讲清楚 这只是我整个程式的一小部分 05/22 16:38
2F:推 hstt:整体来说不会发生您所说的情形 不过逻辑上的确该修正 05/22 16:41