Дайте мне практический пример использования Multi-set - PullRequest
14 голосов
/ 26 марта 2010

Я хотел бы знать несколько практических вариантов использования (если они не связаны / не связаны с каким-либо языком программирования, это будет лучше). Я могу связать Наборы, Списки и Карты с практическими вариантами использования.

Например, если вы хотите получить глоссарий к книге, где нужные термины перечислены в алфавитном порядке, а номер местоположения / страницы является значением, вы должны использовать коллекцию TreeMap (OrderedMap, которая является картой)

Почему-то я не могу связать MultiSets с каким-либо "практическим" вариантом использования. Кто-нибудь знает о каком-либо использовании?

http://en.wikipedia.org/wiki/Multiset не говорит мне достаточно :) 1009 *

PS: Если вы, ребята, думаете, что это должно быть сделано в сообществе, это нормально. Единственной причиной, по которой я этого не сделал, было «Есть четкий объективный способ ответить на этот вопрос».

Ответы [ 4 ]

11 голосов
/ 26 марта 2010

Много приложений. Например, представьте корзину для покупок. Он может содержать более одного экземпляра элемента - то есть 2 процессора, 3 графических платы и т. Д. Таким образом, это мультисет. Одна из простых реализаций состоит в том, чтобы также отслеживать количество элементов каждого из них, то есть хранить информацию о 2 процессорах, 3 графических платах и ​​т. Д.

Я уверен, что вы можете подумать о многих других приложениях.

4 голосов
/ 28 марта 2010

Мультимножество полезно во многих ситуациях, в которых у вас в противном случае была бы карта. Вот три примера.

Предположим, у вас есть класс Foo с аксессором getType (), и вы хотите узнать, сколько экземпляров Foo имеют каждый тип.

Аналогичным образом, система может выполнять различные действия, и вы можете использовать Multiset, чтобы отслеживать, сколько раз происходило каждое действие.

Наконец, чтобы определить, содержат ли две коллекции одни и те же элементы, игнорируя порядок, но обращая внимание на частоту повторения экземпляров, просто наберите

HashMultiset.create(collection1).equals(HashMultiset.create(collection2))
1 голос
/ 26 марта 2010

Корзина покупок - это MultiSet. Вы можете поместить несколько экземпляров одного и того же предмета в корзину, если хотите купить более одного.

1 голос
/ 26 марта 2010

В некоторых областях математики набор рассматривается как мультимножество для всех целей. Например, в линейной алгебре набор векторов рассматривается как мультимножество при тестировании на линейную зависимость. Таким образом, реализации этих полей должны выиграть от использования мультимножеств.

Вы можете сказать, что линейная алгебра не практична, но это совершенно другая дискуссия ...

...