2016-04-22 13 views
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 ..

答えて

0

あなたはマップに存在しない値のキーを取得しようとしています。以下のようにしたいことがあります

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)); 
    // to get the key related to an object 
    System.out.println("tFetch Object:"+map.getKey("Task66")); 
    // to get a value related to a key 
    System.out.println("tFetch Object:"+map.get(tFetch)); 
    } 
} 
+0

これでわかりました。私はgetKeyメソッドがキー値によってキーオブジェクトを返すと考えました。間違いや申し訳ありません、申し訳ありません。 – Max

+0

これがあなたの質問に答えるなら、あなたは未回答の他の質問に注意を喚起するように答えとしてマークしてください – awsome

関連する問題