无法使用map.get()检索多行值

时间:2015-05-12 21:17:08

标签: java dictionary

我有一个需要处理的多行值。我正在使用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已有值,新值将作为新行插入。我需要能够检索现有值以及新值。

2 个答案:

答案 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)