我对Multiset的理解是一个有频率的集合,但我总是可以使用Map来表示频率,还有其他原因可以使用Multiset吗?
答案 0 :(得分:32)
Multiset<E>
优于Map<E, Integer>
的优势:
count(E)
,add(E, int)
等。Multiset<E>
显然将元素映射到它们的计数。 Map<E, Integer>
可以将元素映射到任意整数。另见:
答案 1 :(得分:9)
对我来说,将Multiset
与Map
区分开来的最重要的一点是,它是Collection
:你只需要把东西放进去,你就可以在以后获得计数。它在概念上适合Map
没有设计的用例。对于那些用例,Map
只是一种有点可行的hack,因为Java没有提供更合适的东西。