我有一個名爲prizeWinners的哈希映射。哈希映射中每個對的關鍵是獲得諾貝爾獎的那一年。價值是獲獎者的名字。該值是一串字符串,因爲在任何給定的獎勵年中,可以有多達3個獲勝者。我的問題是:鑑於獲勝者的名字,請返回他們獲獎的年份。有趣的是,返回值還需要是一個字符串:public String getYearWon(String name),其中name是獲勝者的名字。Java Hashmap:從給定值的數組中獲取密鑰
public class NobelPrizeWinners
{
private HashMap<Integer, String[]> prizeWinners;
public NobelPrizeWinners
{
prizeWinners = new HashMap<Interger, String[]>();
prizeWinners.put(2009, new String[] {"Barack H. Obama"});
prizeWinners.put(2008, new String[] {"Martti Ahtisaari"};
prizeWinners.put(2007, new String[] {"IAEA", "Mohamed ElBaradei"});
//and many more
}
public String getYearWon(String name)
{
//code here
}
}
而這就是我卡住的地方:我似乎無法正確訪問數組來遍歷它並獲得密鑰。在我的任務中有幾種方法要求我這樣做(例如,打印出所有獲獎者的姓名),但我只獲取hashmap地址,而不是數組本身的內容。
選中此:http://stackoverflow.com/questions/1066589/iterate-through-a-hashmap。值是數組,因此,當您在其中一個數組中找到您的名稱時,將返回鍵爲String:key.toString()。 –
我知道你正在做這個作業。當您開始處理自己的項目時,可以使用'multimap'存儲這種類型的數據(其中一個鍵可以映射到多個值)。 Guava提供了一些[很好的實現](https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained#Multimap)。 – dnault