Я хочу преобразовать список элементов в список списков, разбивая каждый раз, когда элемент повторяется, как показано ниже
Введите:
List(1, 2, 3, 1, 2, 1, 3, 1, 2, 3)
Ouput:
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.
Заранее спасибо.