是否可以将列表中的元素推入scala中的堆栈?
我知道可以一次推送多个元素,例如
val stack = scala.collection.mutable.Stack[Int]()
stack.push(1,2,3,4)
但如果我有一个已定义的列表或其他集合,我就无法做到
val l1 = List[Int](5,6,7)
stack.push(l1)
实现这一目标的scala惯用方法是什么?
答案 0 :(得分:3)
您可以使用pushAll方法实现它。
val stack = scala.collection.mutable.Stack[Int]()
val l1 = List[Int](5,6,7)
stack.pushAll(l1)
答案 1 :(得分:0)
使用一些已知值创建堆栈
val stack = scala.collection.mutable.Stack[Int](1,2,3,4)
或者使用一些集合初始化。
val l = List(1,2,3,4)
val stack = scala.collection.mutable.Stack[Int](l:_*)
或者像@adamywy推荐的那样使用pushAll。
val stack = scala.collection.mutable.Stack[Int]()
val l = List(1,2,3,4)
stack.pushAll(l)
答案 2 :(得分:0)
根据最后一个(2.12.0)规范mutable.Stack
已弃用,建议改为使用var List
。请参阅Stack api。
(Since version 2.12.0) Stack is an inelegant and potentially
poorly-performing wrapper around List. Use a List assigned
to a var instead.
所以,如果您想用可变列表替换Stack,您的示例将看起来像
var stack = List.empty[Int]
val l1 = List[Int](5,6,7)
stack = stack ++: l1