给我一个Multi-set的实际用例

Kan*_*ath 15 collections guava

我想知道一些实际的用例(如果它们与任何编程语言没有关联/关系会更好).我可以将集合,列表和映射与实际用例相关联.

例如,如果您想要一本书的词汇表,其中您想要的术语按字母顺序列出,并且位置/页码是值,您将使用集合TreeMap(OrderedMap这是一个Map)

不知何故,我无法将MultiSets与任何"实用"用例相关联.有人知道有什么用途吗?

http://en.wikipedia.org/wiki/Multiset并没有告诉我足够的:)

PS:如果你们认为这应该是社区维基,那就没关系.我没有这么做的唯一原因是"有一个明确的客观方式来回答这个问题".

Lar*_*abe 11

很多应用程序.例如,想象一下购物车.这可以包含一个以上项目的实例 - 即2个cpu,3个图形板等.所以它是一个多组.一个简单的实现是跟踪每个项目的数量 - 即保持信息2 cpu,3图形板等.

我相信你可以想到很多其他的应用程序.

  • 为什么不能仅使用“item: count”的映射来完成此操作? (3认同)

Jar*_*evy 5

多重集在许多情况下很有用,否则您将拥有地图。以下是三个例子。

假设您有一个带有访问器 getType() 的类 Foo,并且您想知道对于 Foo 实例的集合,每种类型有多少个。

同样,系统可以执行各种操作,您可以使用 Multiset 来跟踪每个操作发生的次数。

最后,要确定两个集合是否包含相同的元素,忽略顺序但注意实例重复的频率,只需调用

HashMultiset.create(collection1).equals(HashMultiset.create(collection2))
Run Code Online (Sandbox Code Playgroud)