我有一个名为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