gpt4 book ai didi

java - 如何从java中的hashmap中删除字符串数组值?

转载 作者:行者123 更新时间:2023-12-01 16:54:09 26 4
gpt4 key购买 nike

我有一个 1993 年至 2009 年诺贝尔奖获得者的 HashMap ,键是年份,值是获奖者姓名的字符串数组。有些年份有多个获奖者,但没有一年有超过 3 个获奖者。我正在尝试一种方法,从 HashMap 中删除特定名称,并在该特定年份只有一个获奖者时删除 key 。当我尝试这种方法时,它会删除整个键和值,无论当年是否有多个获胜者。(例如 1993 年的获胜者是纳尔逊·曼德拉和弗雷德里克·威廉·德克勒克,如果我尝试仅删除纳尔逊·曼德拉,则 1993 年的整个条目都会消失)

public void removeWinner(String nameOfWinnerToRemove)

{Iterator <HashMap.Entry<Integer, String[]>> it = winners.entrySet().iterator();
while(it.hasNext())
{
HashMap.Entry<Integer, String[]> entry = it.next();
for(int i = 0; i < entry.getValue().length; i++)

{
if(entry.getValue()[i].equalsIgnoreCase(nameOfWinnerToRemove))
{
it.remove();


}
}
}

}

最佳答案

您正在执行 it.remove(); ,这将从 HashMap 中删除整个条目(键值对),而不仅仅是从值中删除特定的获胜者。

你应该这样做:

if(entry.getValue()[i].equalsIgnoreCase(nameOfWinnerToRemove))
{
/* Prepare a new value string without the name you want to remove */
it.put(/* Key */, /* New Value */); //Doing this will overwrite the entry so you don't have to remove and re-add
}

关于java - 如何从java中的hashmap中删除字符串数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172630/

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