将sortedset的列表转换为scala中的sortedset

时间:2015-08-03 17:49:59

标签: scala flatten sortedset

(scala还是新手)我有一个List[SortedSet[A]],我想要一个包含所有(唯一和已排序)元素的唯一SortedSet[A]。我该怎么做?

我的目标是:我有一个课程,比如Container,其中包含Element列表和(子)Container列表。该类应实现递归getSortedElements(): SortedSet[Element]方法。

所以我很容易得到这个无效的代码:

case class Container(myElements: List[Element], myContainers: List[Container]){
    def getSortedElements(): SortedSet[Element] =
        SortedSet(myElements) ++ SortedSet(myContainers.map(_.getSortedElements))
}

1 个答案:

答案 0 :(得分:1)

Scala的Set类型已经强制执行唯一性,因此您需要做的就是组合它们:

val a = SortedSet(1,2,3)
val b = SortedSet(2,7,5)
val c = SortedSet(1, 9)
List(a, b, c).fold(SortedSet())((x, y) => x ++ y)

您也可以使用reduce代替fold

List(a, b, c).reduce((x, y) => x ++ y)

有关这些

之间的差异的详情,请参阅Scala : fold vs foldLeft