【发布时间】:2015-02-24 04:36:20
【问题描述】:
public NobelPrizeWinners()
{
winners = new HashMap<Integer, String[]>();
String[] people = new String[1];
people[0] = "Barack H. Obama";
winners.put(new Integer(2009), people);
people = new String[1];
people[0] = "Martti Ahtisaari";
winners.put(new Integer(2008), people);
people = new String[2];
people[0] = "Intergovernmental Panel on Climate Change (IPCC)";
people[1] = "Albert Arnold (Al) Gore Jr.";
winners.put(new Integer(2007), people);
people = new String[2];
people[0] = "Muhammad Yunus";
people[1] = "Grameen Bank";
winners.put(new Integer(2006), people);
}
public void removeWinner(String nameOfWinnerToRemove)
{
Set<Integer> allYears = winners.keySet();
for(Integer year : allYears)
{
String[] eachYearWinners = winners.get(year);
for (String winner : eachYearWinners)
{
if(winner.equalsIgnoreCase(nameOfWinnerToRemove))
{
winners.remove(year, nameOfWinnerToRemove);
if(eachYearWinners.length < 1)
{
winners.remove(year);
}
}
}
}
}
我想删除用户提供的获胜者(nameOfWinnerToRemove),如果没有匹配的名称,则不执行任何操作。并且,如果键为空,则删除键(整数)。 比如,我想在 2009 年删除“Barack H. Obama”,如果这样做,2009 年将出现空白,那么我必须删除 2009。我该如何做到这一点?
【问题讨论】:
-
它不起作用,还是给你一个异常,因为它可能会运行该代码,因为你不能同时迭代和从实际集合中删除。
-
这是该玩家的家庭作业在几分钟内第二次出现问题。你确定你应该在作业上作弊吗?
-
虽然是作业,但我的导师允许在有问题的时候提问。我不知道你提到的那个球员是谁,但那绝对不是我。判断别人时,请确保自己是对的。