Multiset<E> 相对于 Map<E, Integer> 的优势: 无需特殊代码即可添加尚未在集合中的元素。 直接处理元素计数的方法:count(E)、add(E, int) 等。 代码意图更加清晰。显然,Multiset<E> 将元素映射到它们的计数。而 Map<E, Integer> 可以将元素映射到任意整数。 另请参阅: Multiset Javadoc Guava Wiki 中的 Multiset 解释
对我来说,将Multiset与Map区分开来的最重要的一点是它是一个Collection:您只需将东西放入其中,稍后就可以获得计数。从概念上讲,它适用于设计它的用例,而Map则不适用。对于这些用例,Map只是一种“勉强能用”的hack方法,因为Java没有提供更适合的东西。