将列表的所有元素推送到scala中

时间:2016-11-13 20:23:58

标签: scala

是否可以将列表中的元素推入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惯用方法是什么?

3 个答案:

答案 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