В Scala отсутствуют Мультисети?

Я пробовал проблемы квалификации Facebook Hacker Cup 2013 в Scala, и для 3-й проблемы я почувствовал необходимость упорядоченного Мультисета, но не смог найти его в коллекциях scala (2.10). Отсутствует ли эта структура данных в коллекциях scala. Будет ли он реализован в будущей версии? Действительно ли Multiset не нужен, если у вас уже реализован набор?

4 ответов


мультисет - довольно своеобразная и необычная структура данных. Это, например, не является частью стандартной библиотеки Java. У гуавы есть один, и так же Boost, но Boost имеет в основном все.

Если все, что вы хотите, это подсчитать количество вхождений элементов, вы можете прибегнуть к SortedMap от элемента к count вместо этого. С другой стороны, если требуется, чтобы элементы были отличными, извлекаемыми, но эквивалентными по правилам сортировки, можно использовать SortedMap от элемента (не важно какой) к Set выдающихся элементов.


multiset может быть довольно полезным иногда. Я часто обнаруживаю, что кодирую Map[K, List[V]] вручную. Есть отличная реализация мультимножеств называется Bag Николас стуки, и выпущен на Maven.

здесь:

https://groups.google.com/forum#!тема/scala-internals/ceaEAiQPgK4

вот код:

https://github.com/nicolasstucki/multisets

Maven:

https://github.com/nicolasstucki/multisets/blob/master/MavenRepository.md


Seq качество diff, intersect и даже union. Это должно помочь вам с большим количеством ваших проблем multiset. http://www.scala-lang.org/api/2.11.7/index.html#scala.collection.Seq@diff(that:Seq[A]):Seq[A]


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