在 scala 中将 sortedset 列表转换为 sortedset
Convert list of sortedset to sortedset in scala
(scala 还是新手)我有一个 List[SortedSet[A]]
,我想要一个包含所有(唯一且已排序)元素的唯一 SortedSet[A]
。我应该怎么做?
我的目标是:我有一个 class,比如 Container
,其中包含一个 Element
列表和一个 (sub)Container
列表。 class 应该实现递归 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 以了解有关它们之间差异的更多信息
(scala 还是新手)我有一个 List[SortedSet[A]]
,我想要一个包含所有(唯一且已排序)元素的唯一 SortedSet[A]
。我应该怎么做?
我的目标是:我有一个 class,比如 Container
,其中包含一个 Element
列表和一个 (sub)Container
列表。 class 应该实现递归 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 以了解有关它们之间差异的更多信息