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

看板java作者時間16年前 (2009/05/22 14:52), 編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/3 (看更多)
我想透過HashMap來實作一個如此的mapping: key value (a,b) or (b,a) 1 也就是說不考慮a,b 的順序 (a,b) (b,a)視為相同的元素 主要是想要紀錄此配對出現的次數 因此我建立了一個class如下 並複寫了equals()跟hashCode() public class Pair { private String x; private String y; public Pair(String x, String y){ this.x = x; this.y = y; } 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(); } } 當我將Pair用在Set<>測試時 都很正常 但放到HashMap用時 ketSet().contains()卻變的不是照我所複寫的method去做判斷 想請問這是哪方面的問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.2.179

05/22 15:01, , 1F
差點給騙到了 XDDD 老問題, string comparison 做錯了
05/22 15:01, 1F

05/22 15:02, , 2F
話說... contains() 那邊你這樣寫不會有問題嗎?
05/22 15:02, 2F

05/22 15:08, , 3F
請問是指string要用equals來做嗎?不過為啥放在SET時卻正常@@
05/22 15:08, 3F

05/22 15:49, , 4F
String的比對要使用equals()方法... 很多人會忘了@@
05/22 15:49, 4F

05/22 16:14, , 5F
hstt:一來我不知道你怎樣測, 二來不肯定是怎樣 "正常"
05/22 16:14, 5F
文章代碼(AID): #1A5al1En (java)
討論串 (同標題文章)
文章代碼(AID): #1A5al1En (java)