我在guava中有一个multiset,我想检索一个给定元素的实例数而不迭代这个multiset(我不想迭代因为我认为迭代需要相当长的时间,因为它看起来通过所有的收藏品。)
为此,我首先考虑使用multiset的entryset()方法来获取具有单个实例及其相应计数的集合。然后,将此集转换为hashmap(其中keys是我的set的元素,值是它们的实例计数)。因为那时我可以使用hashmap的方法直接从其键中检索一个值 - 完成!但这只有在我能够快速地将集合转换为散列图(没有迭代所有元素)时才有意义:是否可能?
(正如我所说的,我希望这个问题在多个方面存在缺陷,如果你能说明我在这里可能犯的概念错误,我会很高兴。谢谢!)
答案 0 :(得分:8)
只需在你的多重集中调用count(element)
- 瞧!
答案 1 :(得分:4)
你可能知道在Guava中Multiset
是一个接口,而不是一个类。
如果您只想知道元素的重复数量,请致电Multiset.count(Object element)
。
请忘记以下声明:
然后,如果您使用的是流行的实施HashMultiset
,则已经有HashMap<E, AtomicInteger>
在该场景下工作。
也就是说,当HashMultiset
迭代时,HashMap也会迭代。无需转换为另一个HashMap。