Re: [問題] HashMap: 使用自定類別當作key

看板java作者 (叔叔你人真好)時間16年前 (2009/05/22 16:22), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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

05/22 16:38, , 1F
感謝您的指正 不過是我沒講清楚 這只是我整個程式的一小部分
05/22 16:38, 1F

05/22 16:41, , 2F
整體來說不會發生您所說的情形 不過邏輯上的確該修正
05/22 16:41, 2F
文章代碼(AID): #1A5c2xxg (java)
文章代碼(AID): #1A5c2xxg (java)