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 给定键的值列表。您可以只依赖返回的 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"))
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 给定键的值列表。您可以只依赖返回的 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"))