我想透過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
05/22 15:01, 1F
推
05/22 15:02, , 2F
05/22 15:02, 2F
→
05/22 15:08, , 3F
05/22 15:08, 3F
推
05/22 15:49, , 4F
05/22 15:49, 4F
推
05/22 16:14, , 5F
05/22 16:14, 5F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):