9

我在 Scala 中尝试了 Facebook Hacker Cup 2013 资格问题,对于第三个问题,我觉得需要一个有序的 Multiset,但在 scala (2.10) 的集合中找不到。scala 的集合中是否缺少此数据结构。它会在未来的版本中实现吗?如果您已经实现了一个集合,那么 Multiset 是否真的不需要?

4

5 回答 5

8

多重集有时会非常有用。我经常发现自己Map[K, List[V]]手动编码。BagNicolas Stucki有一个很好的多重集实现,它在 Maven 上发布。

在此宣布:

https://groups.google.com/forum/#!topic/scala-internals/ceaEAiQPgK4

代码在这里:

https://github.com/nicolasstucki/multisets

马文:

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

于 2014-04-21T17:21:20.307 回答
2

多重集是一种相当特殊且不常见的数据结构。例如,它也不是 Java 标准库的一部分。Guava 确实有,Boost 也有,但 Boost 基本上什么都有。

如果您只想计算元素的出现次数,则可以使用SortedMapfrom 元素来计数。另一方面,如果您要求元素是不同的、可检索的,但在排序规则下是等效的,您可以使用一个SortedMapfrom 元素(不重要哪个)到 a Setof distinct elements。

于 2013-01-31T02:40:33.327 回答
1

Seq特质有diffintersect甚至union。这应该可以帮助您解决很多多集问题。http://www.scala-lang.org/api/2.11.7/index.html#scala.collection.Seq@diff(that:Seq[A]):Seq[A]

于 2015-09-07T19:01:50.143 回答
0

如果您只需要平等并且不太关心性能,则可以使用排序列表。

于 2014-02-22T09:12:01.590 回答
0

https://github.com/scala/scala-collection-contrib中提供了可变和不可变的多重集

于 2021-04-03T12:50:04.830 回答