Scala将列表分组为具有一个共享元素的列表元组

Mac*_*ejF 3 functional-programming scala

什么是拆分列表的简短功能方式

List(1, 2, 3, 4, 5) into List((1,2), (2, 3), (3, 4), (4, 5))
Run Code Online (Sandbox Code Playgroud)

mar*_*ios 5

(假设您不关心嵌套对是列表而不是元组)

Scala集合具有sliding窗口功能:

@ val lazyWindow = List(1, 2, 3, 4, 5).sliding(2)
lazyWindow: Iterator[List[Int]] = non-empty iterator
Run Code Online (Sandbox Code Playgroud)

实现收藏:

@ lazyWindow.toList
res1: List[List[Int]] = List(List(1, 2), List(2, 3), List(3, 4), List(4, 5))
Run Code Online (Sandbox Code Playgroud)

你甚至可以做更多"funcy"窗口,比如长度为3但是步骤2:

@ List(1, 2, 3, 4, 5).sliding(3,2).toList
res2: List[List[Int]] = List(List(1, 2, 3), List(3, 4, 5))
Run Code Online (Sandbox Code Playgroud)