scala - 将列表拆分为列表列表

标签 scala list time split functional-programming

如何转换:

List(1,1,1,1,4,2,2,2,2)

进入:

List(List(1,1,1,1), List(2,2,2,2))

我认为这是显示我正在寻找的内容的最简单方法。我很难找到最实用的方法来处理需要在特定元素处分开的大型列表。该元素不会出现在新的列表列表中。任何帮助将不胜感激!

最佳答案

如果你想支持该分隔符的多个实例,你可以使用 foldRight 和一些列表“gymnastics”:

// more complex example: separator (4) appears multiple times
val l = List(1,1,1,1,4,2,2,2,2,4,5,6,4)

val separator = 4

val result = l.foldRight(List[List[Int]]()) {
  case (`separator`, res) => List(Nil) ++ res
  case (v, head :: tail) => List(v :: head) ++ tail
  case (v, Nil) => List(List(v))
}

// result: List(List(1, 1, 1, 1), List(2, 2, 2, 2), List(5, 6))

关于scala - 将列表拆分为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090950/

相关文章:

javascript - [Chart.js]如何防止我的图表绘制超出最短时间?

sql - SQL查询-时间比较(SQLite)

java - 编写自定义 Kafka 序列化器

scala - 使用 spark 加载由 --files 参数分发的共享库 (.so)

list - SwiftUI Mac OS 如何将选择添加到 ListView

c - 为什么这个 C 代码不起作用?

java - 如何检查一个时间段是否与java中的另一个时间段重叠

scala - 如何在IntelliJ IDEA 14社区版中创建Play项目?

list - Scala:将 Map 映射到元组列表

javascript 复选框换行