2010-03-26 11 views
10

Vorrei conoscere alcuni casi d'uso pratico (se non sono correlati/legati ad alcun linguaggio di programmazione sarà meglio). Posso associare Set, Liste e Mappe per casi d'uso pratico.Datemi una pratica custodia del Multi-set

Per esempio, se si voleva un glossario di un libro in cui i termini desiderati sono elencati in ordine alfabetico e un numero di posizione/pagina è il valore, si può usare il TreeMap collezione (OrderedMap che è una Mappa)

In qualche modo , Non posso associare MultiSet a nessun caso di utilizzo "pratico". Qualcuno sa di qualche utilizzo?

http://en.wikipedia.org/wiki/Multiset non mi dice abbastanza :)

PS: Se voi ragazzi che questo dovrebbe essere comunità wiki'ed va bene. L'unica ragione per cui non l'ho fatto è stata "C'è un modo chiaro e obiettivo di rispondere a questa domanda".

+0

A partire da ora, nessuna risposta qui in realtà dà una buona spiegazione. Un carrello della spesa è solo una mappatura di "Oggetto -> Conteggio", un dizionario normale. I Multiset, OTOH, diventano davvero utili in contesti quando troviamo anche l'uso per la loro definizione generalizzata di "set union" e "set intersezione". – Kos

risposta

9

Un sacco di applicazioni. Ad esempio, immagina un carrello della spesa. Questo può contenere più di un'istanza di un elemento, ad esempio 2 cpu, 3 schede grafiche, ecc. Quindi è un Multi-set. Un'implementazione semplice è anche tenere traccia del numero di elementi di ciascuno - vale a dire tenere le informazioni 2 cpu, 3 schede grafiche, ecc.

Sono sicuro che puoi pensare a molte altre applicazioni.

1

In alcuni campi della matematica, un set viene considerato come un multiset per tutti gli scopi. Ad esempio, in Algebra lineare, un insieme di vettori viene considerato come un multiset durante il test della dipendenza lineare. Pertanto, le implementazioni di questi campi dovrebbero trarre vantaggio dall'uso dei multiset.

Si può dire algebra lineare non è pratico, ma che è un intero dibattito diverso ...

1

Un carrello della spesa è un multi-insieme. Puoi mettere diverse istanze dello stesso articolo in un carrello quando vuoi acquistarne più di uno.

4

Un multiset è utile in molte situazioni in cui altrimenti avresti una mappa. Ecco tre esempi.

Supponiamo di avere una classe Foo con un accessor getType() e si desidera sapere, per una raccolta di istanze di Foo, quanti ne hanno ciascuno.

Analogamente, un sistema può eseguire varie azioni e si può utilizzare un Multiset per tenere traccia di quante volte ciascuna azione si è verificata.

Infine, per determinare se due collezioni contengono gli stessi elementi, al fine ignorando ma prestando attenzione a quanto spesso si ripetono casi, è sufficiente chiamare

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