Guava MultiSet对比地图?

时间:2012-01-14 07:13:48

标签: java guava

我对Multiset的理解是一个有频率的集合,但我总是可以使用Map来表示频率,还有其他原因可以使用Multiset吗?

2 个答案:

答案 0 :(得分:32)

Multiset<E>优于Map<E, Integer>的优势:

  • 添加尚未包含在集合中的元素时,无需特殊代码。
  • 直接处理元素数量的方法:count(E)add(E, int)等。
  • 代码的意图更清晰。 Multiset<E>显然将元素映射到它们的计数。 Map<E, Integer>可以将元素映射到任意整数。

另见:

Multiset Javadoc

Multiset explained in the Guava Wiki

答案 1 :(得分:9)

对我来说,将MultisetMap区分开来的最重要的一点是,它是Collection:你只需要把东西放进去,你就可以在以后获得计数。它在概念上适合Map没有设计的用例。对于那些用例,Map只是一种有点可行的hack,因为Java没有提供更合适的东西。