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

时间:2010-03-26 15:37:38

标签: collections guava

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

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

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

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

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

4 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:4)

multiset在许多情况下很有用,否则你会有一个Map。以下是三个例子。

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

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

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

HashMultiset.create(collection1).equals(HashMultiset.create(collection2))

答案 2 :(得分:1)

在Math的某些字段中,集合被视为用于所有目的的多集合。例如,在线性代数中,在测试线性依赖性时,一组向量被设置为多重集。 因此,这些字段的实现应该受益于多集合的使用。

你可能会说线性代数不实用,但这是一个完全不同的争论......

答案 3 :(得分:1)

购物车是MultiSet。如果您想购买多个商品,可以在购物车中放置同一商品的多个实例。