我正在尝试将值插入到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中的所有值?
答案 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,即一个包含每个键的值集合的映射。有很多好的多图实现可供使用: