我想了解一些实际的用例(如果它们与任何编程语言没有关联/关系会更好)。我可以将集合,列表和地图与实际用例相关联。
例如,如果您想要一本书的词汇表,其中您想要的术语按字母顺序列出,并且位置/页码是该值,您将使用集合TreeMap(OrderedMap这是一个Map)
不知何故,我无法将MultiSets与任何“实用”用例相关联。有人知道有什么用途吗?
http://en.wikipedia.org/wiki/Multiset并没有告诉我足够的事情:))
PS:如果你们认为这应该是社区维基,那就没关系。我没有这么做的唯一原因是“有一个明确的客观方式来回答这个问题”。答案 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。如果您想购买多个商品,可以在购物车中放置同一商品的多个实例。