Scala中是否缺少多集?

Scala中是否缺少多集?,scala,set,multiset,Scala,Set,Multiset,我在Scala中尝试2013年Facebook黑客杯资格赛的问题,对于第三个问题,我觉得需要一个有序的多集,但在Scala(2.10)的集合中找不到。scala集合中缺少此数据结构。它是否将在未来版本中实施?如果已经实现了一个集合,那么Multiset真的不是必需的吗?Multiset是一种非常特殊和不常见的数据结构。例如,它也不是Java标准库的一部分。番石榴确实有一个,Boost也有,但Boost基本上什么都有 如果您只想计算元素的出现次数,您可以使用SortedMap从元素到计数。另一方面

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

Multiset是一种非常特殊和不常见的数据结构。例如,它也不是Java标准库的一部分。番石榴确实有一个,Boost也有,但Boost基本上什么都有


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

如果您只需要相等,而不太关心性能,您可以只使用排序列表。

多集有时非常有用。我经常发现自己在手动编写
Map[K,List[V]
。Nicolas Stucki有一个很棒的多集实现,名为
Bag
,在Maven上发布

在这里宣布:

代码如下:

马文:


Seq
特征有
diff
intersect
甚至
union
。这将帮助您解决许多多集问题

Set
-s的
LinkedHashSet
中提供了可变和不可变的多集?无论如何,它不会显示这些谜题,因为Facebook登录,你会推广Facebook吗?=)这很奇怪,但有一页说马克是杯赛冠军。不,我不宣传FB。这只是一个诚实的问题,我试图给出一点背景:)我不同意“多集是一种相当奇特和不常见的数据结构”。如果您正在做诸如计算单词或制作事物的直方图之类的事情,那么多集是一种非常常见的数据结构。Java集合库的两个非常常见的扩展中有多集,以及。我不明白你怎么能说它“奇特而不寻常”。直接从Python计数器类文档中可以看出:“计数器类类似于其他语言中的bag或multiset”。也许你可以评论一下你认为的区别是什么?基于此,多集本质上是<代码> map [t,int ] < /> >,这正是Python提供的。我知道,因此,同时提供内置多集/包类,只计算C++一个,因为它是唯一实现语言的设置API的唯一类。我更像是一个实用主义者——如果一个类提供了基本的多集/包操作(元素、迭代、计数等),那么我就把它算作多集/包。我想知道为什么要实现
Map[K,List[V]
Map[T,Int]@Steve在对已接受答案的评论中提到的
对我来说更有意义。这取决于您的用例是什么-有时您的元素根据
equals是相等的,但有您想要保留的额外信息。在SBT项目中导入的代码是libraryDependencies++=Seq(“io.github.nicolasstucki”%%“multiset”%%“0.4”)就其价值而言,一个
映射[K,List[V]
实际上是一个
MultiMap
,Scala确实有这样一个特点: