将sortedset列表转换为scala中的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))
}

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了解更多关于

的区别

最新更新