【发布时间】:2019-03-31 15:58:15
【问题描述】:
我想将元素列表转换为列表列表,只要一个元素像下面这样重复就中断
输入:
List(1, 2, 3, 1, 2, 1, 3, 1, 2, 3)
输出:
List[List[Integer]] = List(List(1, 2, 3), List(1, 2), List(1, 3), List(1, 2, 3))
这是我尝试过的:
val tokens = List(1,2,3,1,2,1,3,1,2,3)
val group = new ListBuffer[List[Integer]]()
val nextGroup = new ListBuffer[Integer]()
val nextTokens = new ListBuffer[Integer]()
for (t <- tokens) {
if (nextTokens.contains(t)) {
group += nextGroup.toList
nextGroup.clear()
nextTokens.clear()
}
nextGroup += t
nextTokens += t
}
group += nextGroup.toList
group.toList
我正在寻找一种更好的方法来实现这一点,使用 map/foldLeft... 函数而不使用 ListBuffer。
提前致谢。
【问题讨论】:
-
所以只要有 1,您就将列表分开?
-
就我而言,元素 1 不固定。每当遇到重复的元素时,我都想打破列表。
-
@jrook 这个问题不是你发布的问题的重复,因为在我的场景中没有固定的分隔符。
-
感谢@jrook 参考类似问题有助于提出解决方案
标签: scala list functional-programming