在MultiMap中计算出现次数

3

我有一个包含多个相似值的MultiMap:

{Entertainment=[5], Food=[2, 2, 2], Products=[11], Health & Beauty=[3]}

我如何计算这些键的总数,使其如下所示?
Entertainment = 1
Food = 3
Products = 1
Health & Beauty = 1

数组中的数字是分类 ID,因此食物出现了 3 次。
3个回答

11

可以使用 multimap.get(key).size() 或者 multimap.keys().count(key)

文档


问题在于它循环遍历所有可用的键,包括大小为3的Food。因此,它会循环3次。 - emen
2
哦,你在说遍历键:只需循环遍历keySet()而不是keys(),以仅获取每个键一次。 - ColinD

1
假设您的地图声明如下:MultiMap<String,Integer> map,您可以执行以下操作:
for (String key : map.keySet()) {
    int count = map.get(key).size();
}

它也将食品计算为3倍。总共会计算6次,但我只想要4次(娱乐、食品、产品、健康与美容)。 - emen
是的,这应该改为 for (String key : map.keySet()) - ColinD

0

使用asMap()方法,您可以获得MultimapMap<String,Collection<Integer>>表示形式,从中可以直接获取计数而无需多次查找:

for (Map.Entry<String, Collection<Integer>> entry : multimap.asMap().entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue().size());
}

注意:要获取Multimap上的键的Set,您需要调用keySet(),而不是keys()(它会根据值的数量重复键)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接