我有一个需要处理的多行值。我正在使用map.get()
方法来检索该值,但它似乎只获取最后一行值。
这是我的代码:
map = new LinkedHashMap();
updateMap("BUG", parser, map, bugRec);
map.put(nextBuildIdTagName, nextBuildId); // putting the new value in
String value = (String)map.get(nextBuildIdTagName); // This is where it is not working
nextBuildIdTagName
已有值,新值将作为新行插入。我需要能够检索现有值以及新值。
答案 0 :(得分:0)
因此,根据我的理解,您希望在单个键下的地图中存储多个值。最简单的方法(不使用任何带有multimap impl的外部库)就是创建一个这样的列表映射:
Map<String, List<String>> map = new HashMap<>();
然后当您添加到地图时,您可以这样做:
if(!map.containsKey(nextBuildIdTagName)) {
map.put(nextBuildIdTagName, new ArrayList<>());
}
map.get(nextBuildIdTagName).add(nextBuildId);
然后获取所有项目并迭代它们
for(String value : map.get(nextBuildIdTagName)) {
// do sth to each line
}
答案 1 :(得分:0)
在HashMap的javadoc(其中LinkedHashMap是子类)中,明确指出:“如果地图先前包含键的映射,则替换旧值”。要为同一个键存储多个值(行),您需要执行以下操作:
Map<String, List<String>> map = new Linked HashMap<>();
添加到列表中(这是地图值)needes行。注意:这里我假设您的密钥是String,根据需要更改其类型。
来源:http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put(K,%20V)