Scala - 获取另一个堆栈的内容(不是地址)

时间:2012-04-30 17:29:12

标签: scala stack

如果我有一个堆栈使用可变scala堆栈集合,有没有办法可以复制堆栈,以便我可以通过弹出它来分析它的元素而不改变原始堆栈?例如,假设我有一个堆栈和代码如下:

import scala.collection.mutable.Stack
var stack1 = new Stack[Int]
/** Code that pushes integers on stack1*/
var stackCopy = stack1
while (!stackCopy.isEmpty) {
    println(stackCopy.pop)
}

我想使用while循环来打印stack1中的所有元素。但是当我制作副本并弹出该副本时,原始堆栈(即stack1)也会被更改。我想保留原始堆栈,那么我怎样才能获取内容而不是地址?

1 个答案:

答案 0 :(得分:1)

你可以用来理解:

for( i <- stack1 ) { println(i) }

或只是调用foreach方法:

stack1 foreach println

如果您坚持使用while循环,则可以先将其转换为列表:

var is = stack1.toList
while( is.nonEmpty ) {
  println( is.head )
  is = is.tail
}

使用所有这些方法,将保留原始堆栈。