gpt4 book ai didi

java - 迭代 for 循环以获取字符串列表并存储元素值

转载 作者:行者123 更新时间:2023-11-30 07:00:40 24 4
gpt4 key购买 nike

我有一个hashmap,其中包含我在for循环中进行交互的键列表。在我的 HashMap 中,我有一个键 FURNITURE_NAMES 和值 Table,Chair,Board。现在我希望将 FURNITURE_NAMES 键中存在的值存储在列表中。

下面是我完成的代码:

当我拿到 key FURNITURE_NAMES时,我有以下值

FURNITURE_NAMES =“ table 、椅子、板子”

for(Map.Entry<String, List<String>> entry : furnitureMap.entrySet()) 
{
String furnitureKey = entry.getKey();
for(String key : entry.getValue() )
{
if(furnitureKey!=null && furnitureKey.equalsIgnoreCase("FURNITURE_NAMES"))
{
furnitureList = new ArrayList<String>();
String a = new String();
a=key;
furnitureList.add(a);
}
}
}

当我迭代 Hashmap 获取键 FURNITURE_NAMES 时,我得到第一个值 “Table”该值存储在列表中。其次,我得到了椅子。它覆盖了值表,并且列表中仍然只有 1 个值,即 chair

我也尝试通过索引将值放入列表中,但它引发了indexoutofboundsException。我如何拥有列表中的所有值而不是被新值覆盖。任何帮助。

最佳答案

在每次迭代中,您都会创建列表的新实例,如下所示:

furnitureList = new ArrayList<String>();

您必须在 for 或其他位置之前创建此列表,并将其保留如下:

furnitureList = new ArrayList<String>();
for(Map.Entry<String, List<String>> entry : furnitureMap.entrySet()) {
// same code here except the list initialization
}

此外,您不需要为每个值创建一个新字符串。只需将其作为 for 循环中的 value 变量(错误地命名为 key:))放入列表中即可。如果我们重构您的代码,它将类似于:

furnitureList = new ArrayList<String>();
for(Map.Entry<String, List<String>> entry : furnitureMap.entrySet()) {
if(entry.getKey() != null && entry.getKey().equalsIgnoreCase("FURNITURE_NAMES")) {
furnitureList.addAll(entry.getValue());
}
}

关于java - 迭代 for 循环以获取字符串列表并存储元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40990077/

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