В 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
вот код:
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]
Если все, что вам нужно, это равенство, и вы не слишком заботитесь о производительности, вы можете просто использовать отсортированные списки.