获取guava多重集中元素的实例数而不进行迭代

时间:2011-10-08 04:54:01

标签: java guava multiset

我在guava中有一个multiset,我想检索一个给定元素的实例数而不迭代这个multiset(我不想迭代因为我认为迭代需要相当长的时间,因为它看起来通过所有的收藏品。)

为此,我首先考虑使用multiset的entryset()方法来获取具有单个实例及其相应计数的集合。然后,将此集转换为hashmap(其中keys是我的set的元素,值是它们的实例计数)。因为那时我可以使用hashmap的方法直接从其键中检索一个值 - 完成!但这只有在我能够快速地将集合转换为散列图(没有迭代所有元素)时才有意义:是否可能?

(正如我所说的,我希望这个问题在多个方面存在缺陷,如果你能说明我在这里可能犯的概念错误,我会很高兴。谢谢!)

2 个答案:

答案 0 :(得分:8)

只需在你的多重集中调用count(element) - 瞧!

答案 1 :(得分:4)

你可能知道在Guava中Multiset是一个接口,而不是一个类。

如果您只想知道元素的重复数量,请致电Multiset.count(Object element)

请忘记以下声明:

然后,如果您使用的是流行的实施HashMultiset,则已经有HashMap<E, AtomicInteger>在该场景下工作。 也就是说,当HashMultiset迭代时,HashMap也会迭代。无需转换为另一个HashMap。