循环将值输入Java Hashmap

时间:2013-11-07 11:55:18

标签: java hashmap

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

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中的所有值?

3 个答案:

答案 0 :(得分:2)

它只存储最后一个条目,因为hashmap中不允许重复键。要存储所有元素,你可以做这样的事情

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

答案 1 :(得分:1)

如果要将所有值存储在hashMap中,则需要在地图中允许重复。要做到这一点,您需要使用Google的Multimap版本,可以找到here

答案 2 :(得分:1)

hashMap中的键是唯一的,因此您可以看到重复键插入的最后一个条目。如果要存储与一个键关联的多个项目,则可以使用MultiMap,即一个包含每个键的值集合的映射。有很多好的多图实现可供使用: