2010-03-26 18 views
10

的實際使用情況,我想知道一些實用的使用情況(如果它們不相關/依賴於任何編程語言,它會更好)。我可以關聯集合,列表和映射到實際用例。給我多集

例如,如果你想要一本書,要按照字母順序列出的條款和位置/頁碼是價值的詞彙表,您可以使用收集TreeMap中(OrderedMap這是一個地圖)

不知何故,我無法將MultiSets與任何「實用」用例相關聯。有人知道任何用途嗎?

http://en.wikipedia.org/wiki/Multiset並沒有告訴我足夠的:)

PS:如果你們認爲這應該是社區wiki'ed它是好的。我沒有這樣做的唯一原因是「有一個明確客觀的方式來回答這個問題」。

+0

截至目前,沒有答案在這裏,其實是給予了很好的解釋。購物車只是一個映射'Item - > Count',一個普通的字典。 Multisets,OTOH,當我們額外地找到用於它們的「set union」和「set intersection」的廣義定義時,在上下文中變得非常有用。 – Kos 2012-01-24 22:47:33

回答

9

很多應用程序。例如,想象一下購物車。它可以包含一個物品的多個實例 - 即2個CPU,3個圖形卡等,因此它是一個多重集合。一個簡單的實現還跟蹤每個項目數的 - 即保持周圍的信息2分CPU的,3個繪圖板等

我相信你能想到很多其他的應用程序。

1

在數學的某些領域,一組被視爲適合所有目的的多集。例如,在線性代數中,當測試線性相關性時,一組向量被視爲多重集。因此,這些字段的實現應該受益於multisets的使用。

你可能會說線性代數是不實際的,但是這是一個完全不同的辯論......

1

購物車是一個多重。如果您想購買多個商品,則可以將同一商品的多個實例放入購物車中。

4

多集是在其中否則你有地圖很多情況下是有用的。這裏有三個例子。

假設你有一個類Foo與訪問者的getType(),和你想知道,Foo的實例的集合,有多少每種類型。

同樣,一個系統可以執行各種操作,你可以使用一個多重跟蹤的多少次發生的每個動作。

最後,確定兩個集合是否包含相同的元素,忽略訂單,但關注的實例是如何經常重複,只需撥打

HashMultiset.create(collection1).equals(HashMultiset.create(collection2)) 
相關問題