Java 计算多重映射中的出现次数

Java 计算多重映射中的出现次数,java,guava,multimap,Java,Guava,Multimap,我有一个具有多个类似值的多重映射: {Entertainment=[5], Food=[2, 2, 2], Products=[11], Health & Beauty=[3]} 如何计算这些键的总数,使其按如下方式计算 Entertainment = 1 Food = 3 Products = 1 Health & Beauty = 1 数组中的数字是类别id,因此食物有3次出现。multimap.get(key).size() 假设您的地图声明如下:MultiMap ma

我有一个具有多个类似值的多重映射:

{Entertainment=[5], Food=[2, 2, 2], Products=[11], Health & Beauty=[3]}
如何计算这些键的总数,使其按如下方式计算

Entertainment = 1
Food = 3
Products = 1
Health & Beauty = 1
数组中的数字是类别id,因此食物有3次出现。
multimap.get(key).size()


假设您的地图声明如下:
MultiMap map
,您可以执行以下操作:

for (String key : map.keySet()) {
    int count = map.get(key).size();
}
使用
asMap()

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

注意:要在
多重映射
上获取键的
,您需要调用
键集()
,而不是
键()
(它索引重复键的次数与它的值相同)。

问题是它会循环所有可用键,包括大小为3的食物。它也因此循环了3次。哦,你说的是在钥匙上循环:只需在
keySet()
上循环,而不是在
keys()
上循环,每个钥匙只循环一次。它还将食物计算为3次。总共是6,而我只想要4(娱乐、食品、产品、健康和美容)是的,这应该是(字符串键:map.keySet())