【发布时间】:2014-05-16 00:47:29
【问题描述】:
我有一个具有多个相似值的 MultiMap:
{Entertainment=[5], Food=[2, 2, 2], Products=[11], Health & Beauty=[3]}
如何计算这些键的总数,以便如下计数?
Entertainment = 1
Food = 3
Products = 1
Health & Beauty = 1
数组中的数字是类别id,所以Food出现了3次。
【问题讨论】:
我有一个具有多个相似值的 MultiMap:
{Entertainment=[5], Food=[2, 2, 2], Products=[11], Health & Beauty=[3]}
如何计算这些键的总数,以便如下计数?
Entertainment = 1
Food = 3
Products = 1
Health & Beauty = 1
数组中的数字是类别id,所以Food出现了3次。
【问题讨论】:
multimap.get(key).size() 或 multimap.keys().count(key) 应该可以工作。
【讨论】:
keySet() 而不是遍历 keys() 以获取每个键一次。
假设您的地图声明如下:MultiMap<String, Integer> map,您可以执行以下操作:
for (String key : map.keySet()) {
int count = map.get(key).size();
}
【讨论】:
for (String key : map.keySet())。
使用asMap(),你可以得到Multimap的Map<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()(实际上重复键的次数与它的次数一样多)值)。
【讨论】: