Multimap如何从键返回所有值

时间:2015-09-30 20:47:27

标签: java guava multimap

Multimaps可以有多个值,如果它包含多个值,我将如何从键中返回所有值。

Multimap<String, String> wordcount = ArrayListMultimap.create();
wordcount.put("1", "Dog");
wordcount.put("1", "Dog2");
wordcount.put("1", "Dog3");

所以你可以在上面看到我给出了我的Multimap键&#34; 1&#34;以下值&#34; Dog&#34;,&#34; Dog2&#34; &安培; &#34; Dog3&#34;我怎么能打印出所有的狗?

额外问题 如何检查某个键是否包含该特定键的相同字符串的多个值?我怎样才能返回&#34;相同&#34;它包含的字符串。它应返回 3 ,因为我使用相同的值指定值 3 ,因此它应返回 3

wordcount.put("1", "Dog");
wordcount.put("1", "Dog");
wordcount.put("1", "Dog");

2 个答案:

答案 0 :(得分:3)

您可以执行wordcount.get("1")它将返回包含Dog1, Dog2, Dog3

的列表

对于你的额外问题:如果你想使用wordcount.get("1")实例,我认为你必须做ArrayListMultimap来获取List对象并遍历列表对象。

或者,您可能需要签出Multiset<String>来跟踪输入字符串的出现次数。在这种情况下,您可以使用Map<String, Multiset<String>>而不是ArrayListMultimap实例来避免迭代返回的列表。

但是Multiset<?>是一个集合,因此它不会按照您放置值的顺序进行迭代。

答案 1 :(得分:2)

get方法返回给定键的值列表。您可以依赖返回的List toString()

System.out.println(wordcount.get("1"));

或者只是迭代它们并分别打印每一个:

for (String s : wordcount.get("1")) {
    System.out.println(s);
}

或者以某种方式将该列表中的所有值加入单个字符串,例如,使用Joiner

System.out.println(Joiner.on(",").join(wordcount.get("1"))
相关问题