2014-02-22 54 views
0

我對HashMap有個疑問。如何搜索和HashMap的如何搜索存儲在HashMap中的對象

返回對象的細節我聲明如下

private HashMap <String,Champions> AllChampions = new HashMap<String, Champions>(); 

HashMap的下面我宣佈,並添加了一個對象的數組,我想搜索

Champions d = new Worrier("Elblond", 200, "Sword"); 

AllChampions.put(b.getName(), b); 

如何搜索存儲在哈希映射中的對象。我下面使用的代碼不能正常工作

private boolean isChampion(String name) 
{ 
    return AllChampions.containsKey(name); 
} 


public String getChampion(String name) 
{ 
    if (isChampion(name)) 
    { 
     return AllChampions.get(name).toString(); 
    } 
    return null; 
} 
+0

public冠軍getChampion(String name){return AllChampions.get(name); }這將返回給定名稱的冠軍。然後你用Champion對象做任何你想做的事情。例如冠軍冠軍= getChampion(「Elblond」); String weapon = champ.getWeapon(); //武器等於「劍」 –

+0

什麼不行?你看到了什麼行爲,你期望看到什麼? –

+1

你創建'd'。但是你把'b'.then如何得到'd'? – lakshman

回答

1

你的錯誤是在這裏:

Champions d = new Worrier("Elblond", 200, "Sword"); 
AllChampions.put(b.getName(), b); // you are adding b, but declared d 

將其更改爲:

AllChampions.put(d.getName(), d); 

順便說一句,你getChampion()方法增加價值不大:直接使用AllChampions.get(name)

0

一個建議你最後的方法。

public Champion getChampion(String name) 
{ 
    if (AllChampions.containsKey(name)) 
    { 
     return (Champion) AllChampions.get(name); 
    } 
    return null; 
}