Дайте мне практический случай использования Multi-set

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

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

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

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

PS: Если вы, ребята, думаете, что это должно быть сообщество-wiki'ed, все в порядке. Единственная причина, по которой я этого не делал, - "Существует четкий объективный способ ответить на этот вопрос".

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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