作者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
推 hstt:感謝您的指正 不過是我沒講清楚 這只是我整個程式的一小部分 05/22 16:38
推 hstt:整體來說不會發生您所說的情形 不過邏輯上的確該修正 05/22 16:41