使用相同的密钥检索hashmap的各个条目

时间:2014-05-01 07:45:07

标签: java hashmap multimap

我创建了一个Hashmap,它有一个Key条目的多个条目。现在我想单独检索所有值。我怎么能这样做?

我检查了很多网站,但无法获得如何实现它的线索,示例代码段对我有用。

HashMap<String,String>

  key       value
04302014  04302014
04302014  abc
04302014  10
04302014  20
04302014  20
05302014  05302014
05302014  def
05302014  10
05302014  20
05302014  20

现在使用key我想单独检索所有值并存储在变量中。

与密钥04302014类似,我需要提取一次并存储在变量中,并在第二次迭代中存储密钥05302014

2 个答案:

答案 0 :(得分:2)

Hashmap每个键只有一个值,所以这是不可能的。你需要一个Multimap(例如在Guava中)或Map到值列表。

答案 1 :(得分:0)

java中的任何map(hashmap,linkedhashmap,hashtable或treemap)只能有一个唯一键。

如果再次添加相同的密钥,则会覆盖之前的密钥。

最好在列表或集合中添加值,并使用单个键将其添加到地图中。

同样如下所示

Map<String, List<String>> map = new HashMap<String, List<String>>();

List<String> values1 = new ArrayList<String>();
List<String> values2 = new ArrayList<String>();

values1.add("10");
values1.add("20");

values2.add("30");
values2.add("40");

map.put("key1", values1);
map.put("key2", values2);

for (Map.Entry<String, List<String>> entry : map.entrySet()) {

    System.out.println(entry.getKey() + " values are ");
    System.out.println(entry.getValue());
}

在你的情况下 使用值04302014,abc,10,20,20

创建列表

另一个值为def,10,20,20

的列表

使用相应的键添加这两个列表 list1的密钥04302014和list2的密钥05302014