0
私はDualHashBidiMapとgetKeyメソッドに問題があります。私が使用しているDualHashBidiMapとgetKeyメソッド
コモンズコレクション4.1
のcontainsKey方法はinsterted特定のキーのためにtrueを返しますが、のgetKey方法は同じキーに対してnullを返します。 はに等しく、ハッシュコード方法はIDプロパティで一致させるためにオーバーライドして
キークラスはスーパークラスを持っています。
メインクラス
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
DualHashBidiMap<Observed, Object> map=new DualHashBidiMap<Observed,Object>();
Task t66=new Task();
t66.setId(66);
map.put(t66, "Task66");
Task tFetch=new Task();
tFetch.setId(66);
System.out.println("tFetch present:"+map.containsKey(tFetch));
System.out.println("tFetch Object:"+map.getKey(tFetch));
}
}
これは出力
tFetch present:true
tFetch Object:null
キークラス
public class Task extends Observed{
public void m1(){
System.out.println("Method called !!");
}
}
キースーパークラス
ですpublic class Observed extends Observable{
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
boolean retValue=false;
Observed t=(Observed) obj;
if(t.getId().equals(this.getId())) retValue=true;
return retValue;
}
@Override
public int hashCode() {
int hash = 3;
hash = 53 * hash + (this.getId() != null ? this.getId().hashCode() : 0);
hash = 53 * hash + this.getId();
return hash;
}
}
すべてのTNKS ..
これでわかりました。私はgetKeyメソッドがキー値によってキーオブジェクトを返すと考えました。間違いや申し訳ありません、申し訳ありません。 – Max
これがあなたの質問に答えるなら、あなたは未回答の他の質問に注意を喚起するように答えとしてマークしてください – awsome