0

我正在尝试将值插入哈希图中。我将它放在一个循环中,因为正在从字符串列表中检索值。代码如下:

HashMap<String, String> resultHashMap = new HashMap<String, String>();

//add the top document id back to the resultHashMap
resultHashMap.put("entryObject", dsStepParam.getValue());

for(String res : results) 
{
    log.info(res);
    resultHashMap.put("dataObject", res);
}

hashMap(在这个循环之后应该包含以下内容:

{"entryObject":"500386787",
"dataObject":"500386883;500901929",
"dataObject":"500386906;500901969",
"dataObject":"500386787;500901666",
"dataObject":"500386784;500901654",
"dataObject":"500386762;500901599"}

但实际内容是:

{"entryObject":"500386787",
"dataObject":"500386762;500901599"}

如您所见,它仅存储 entryObject 和最后一个 dataObject。如何让它将所有值存储在 hashMap 中?

4

3 回答 3

3

它只存储最后一个条目,因为哈希图中不允许重复键。要存储所有元素,您可以执行以下操作

int count = 0;
for(String res : results) 
{
    log.info(res);
    resultHashMap.put("dataObject-"+count, res);
    count++;
}

因此你会得到这样的东西

{"entryObject":"500386787",
"dataObject-1":"500386883;500901929",
"dataObject-2":"500386906;500901969",
"dataObject-3":"500386787;500901666",
"dataObject-4":"500386784;500901654",
"dataObject-5":"500386762;500901599"}
于 2013-11-07T11:56:36.543 回答
1

如果您希望它在 hashMap 中存储所有值,则需要允许映射中的重复项。为此,您需要使用 Google 的 Multimap 版本,可在此处找到

于 2013-11-07T11:57:53.917 回答
1

hashMap 中的键是唯一的,因此您会看到重复键插入的最后一个条目。如果您想存储与一个键关联的多个项目,那么您可以使用 MultiMap 即一个映射,该映射针对每个键保存一组值。有几个好的多地图实现可用:

于 2013-11-07T11:58:09.837 回答