18

我想知道一些实际用例(如果它们与任何编程语言无关/绑定会更好)。我可以将 Sets、Lists 和 Maps 与实际用例相关联。

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

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

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

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

4

4 回答 4

12

很多应用。例如,想象一个购物车。这可以包含一个项目的多个实例 - 即 2 个 cpu、3 个图形板等。所以它是一个多集。一个简单的实现是还跟踪每个项目的数量 - 即保持 info 2 cpu、3 个图形板等。

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

于 2010-03-26T15:49:42.780 回答
4

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

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

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

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

HashMultiset.create(collection1).equals(HashMultiset.create(collection2))
于 2010-03-28T01:08:42.397 回答
1

在数学的某些领域,一个集合被视为一个多重集合。例如,在线性代数中,在测试线性相关性时,将一组向量作为一个多重集。因此,这些字段的实现应该受益于多集的使用。

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

于 2010-03-26T15:46:21.660 回答
1

购物车是一个多集。当您想购买多个时,您可以将同一商品的多个实例放入购物车。

于 2010-03-26T15:49:18.397 回答