java Guava MultiSet vs Map?

r6hnlfcb  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(115)

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

ycl3bljg

ycl3bljg1#

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

  • 添加集合中不存在的元素时不需要特殊代码。
  • 直接处理元素计数的方法:count(E)add(E, int)等。
  • 代码的意图更清楚了,Multiset<E>显然将元素Map到它们的计数,而Map<E, Integer>可以将元素Map到任意整数。

另见:
Multiset Javadoc
GuavaWiki中解释的多重集

hgncfbus

hgncfbus2#

对我来说,将MultisetMap区分开来的最重要的一点是它是一个Collection:你只需要把东西放进去,然后你就可以得到计数了。它在概念上适合它设计的用例,而Map不适合。对于那些用例,Map只是一个hack,kinda-sorta工作正常,因为Java没有提供任何更合适的东西。

相关问题