如果我有这样的已排序流:
Stream(1, 1, 2, 2, 2, 3, 4, 4, 5)
如何将其内容分组如下:
Stream(List(1, 1), List(2, 2, 2), List(3), List(4, 4), List(5))
不立即对流进行完全评估?
答案 0 :(得分:1)
你可以使用类似的东西,但它只适用于排序的流
def groupValues(stream: Stream[Int]): Stream[List[Int]] = {
if(stream.isEmpty) {
Stream.empty
} else {
val head = stream.head
val list = stream.takeWhile(_ == head).toList
list #:: groupValues(stream.drop(list.size))
}
}