Multimap 如何 return 来自一个键的所有值

Multimap how to return all values from a key

Multimaps 可以有多个值,如果一个键包含多个值,我如何才能 return 从一个键中获取所有值。

Multimap<String, String> wordcount = ArrayListMultimap.create();

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

所以你可以在上面看到我为我的 Multimap 键“1”提供了以下值 "Dog"、"Dog2" 和 "Dog3" 我怎样才能打印出所有的狗?

额外问题 我如何才能检查某个键是否包含该特定键的同一字符串的多个值?另外,我如何能够 return 它包含的 "same" 字符串的数量。它应该 return 3 因为我用相同的值指定了值 3 次所以它应该 return 3.

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

你可以只做 wordcount.get("1") 它会 return 一个包含 Dog1, Dog2, Dog3

的列表

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

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

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

get 方法 returns 给定键的值列表。您可以只依赖返回的 ListtoString():

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"))