【问题标题】:Convert list of sortedset to sortedset in scala在scala中将sortedset列表转换为sortedset
【发布时间】:2015-10-25 22:23:34
【问题描述】:

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

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

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

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

【问题讨论】:

  • 澄清一下,您希望输出为SortedSet,其中所有项目都在List 中的所有SortedSets 中?
  • 是的。 List(SortedSet(3,5,7),SortedSet(2,5,8)) => SortedSet(2,3,5,7,8) 但不是整数

标签: scala flatten sortedset


【解决方案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 了解更多关于它们之间的差异

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多