Vla*_*kov 8 java algorithm scala linked-list
假设我们在Java中具有以下结构:
class List {
// we're immutable
final List next;
final int value;
public List(int value, List next) {
this.next = next;
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
Scala内置了对不可变单链表的支持.这将是:
val l = List(1, 2, 3) // immutable
Run Code Online (Sandbox Code Playgroud)
那么,是否有可能在这种列表中创建一个循环(不可变的单链表).按周期,我的意思是:
sen*_*nia 11
您应该使用lazy
集合来创建无限集合.你可以使用Stream
:
def loopStream: Stream[Int] = {
lazy val loop: Stream[Int] = 3 #:: 4 #:: 5 #:: 6 #:: 7 #:: 8 #:: loop
1 #:: 2 #:: loop
}
loopStream.take(22).toList
// List(1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 3, 4)
Run Code Online (Sandbox Code Playgroud)