gpt4 book ai didi

Java HashMap : Get key from a given ARRAY of values

转载 作者:行者123 更新时间:2023-11-30 08:12:07 25 4
gpt4 key购买 nike

我有一个名为prizeWinners的hashMap。 hashMap 中每对的键是获得诺贝尔奖的年份。该值是获奖者的姓名。该值是一个字符串数组,因为在任何给定的奖项年份中,最多可以有 3 名获奖者。我的问题是:根据获奖者的姓名,返回他们获奖的年份。有趣的是,返回值也需要是一个字符串:public String getYearWon(String name),其中name是获胜者的名字。

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
}
}

这就是我陷入困境的地方:我似乎无法正确访问数组以迭代它并获取 key 。我的作业中有几个方法要求我这样做(例如,打印出所有获胜者的名字),但我只获得了 HashMap 地址,而不是数组本身的内容。

最佳答案

遍历prizeWinner键(年)。对于每一年,获取获奖者字符串数组并将其转换为列表,然后调用 contains 方法以查看获奖者列表是否包含作为参数传递的获奖者名称。如果是这种情况,我们将停止循环并以字符串形式返回年份。如果我们遍历所有年份但没有找到获胜者的名字,我们将返回 null

private HashMap<Integer, String[]> prizeWinners;

public PartsPortlet()
{
prizeWinners = new HashMap<Integer, 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) {
for (int year : prizeWinners.keySet()) {
if (Arrays.asList(prizeWinners.get(year)).contains(name)) {
return String.valueOf(year);
}
}
return null;
}

关于Java HashMap : Get key from a given ARRAY of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com