我想在scala中的列表末尾添加元素。我怎样才能实现它?

时间:2015-09-07 18:55:48

标签: list scala

让我们举一个例子,商店就是我的班级。

class store(val a:Int) { }

在我想要创建商店列表的代码中。

 val list : List[store] = new List[store]()

如何在同一个列表中添加商店?

2 个答案:

答案 0 :(得分:1)

首先,将类名称大写通常是一个好主意。

scala> class Store(val a:Int) { }
defined class Store

scala> val list : List[Store] = List.empty
list: List[Store] = List()

scala> val newList = new Store(4) :: list
newList: List[Store] = List(Store@243306de)

默认情况下,您的列表是不可变的,因此每次添加元素时都会有一个新列表。

scala> val newerList = new Store(71) :: newList
newerList: List[Store] = List(Store@30f57af0, Store@243306de)

<强>附录

如果您需要一个可变列表(通常不推荐),您可以尝试以下方法。

scala> import scala.collection.mutable.MutableList
import scala.collection.mutable.MutableList

scala> val myList: MutableList[Store] = MutableList.empty
myList: scala.collection.mutable.MutableList[Store] = MutableList()

scala> myList += new Store(56)
res322: myList.type = MutableList(Store@6421614e)

scala> myList += new Store(29)
res323: myList.type = MutableList(Store@6421614e, Store@85b26)

scala> myList += new Store(11)
res324: myList.type = MutableList(Store@6421614e, Store@85b26, Store@5d2f7883)

可变变量被认为是不良的风格,并且妨碍了正确的功能编程。

答案 1 :(得分:0)

要将元素添加到列表的开头,请使用::

val l = List(1, 2, 3)

val l1 = 5 :: l // List(5, 1, 2, 3) 

val l1 = l.::(5)

要将元素添加到列表末尾,请使用:+

val l2 = l :+ 5 // List(1, 2, 3, 5) 

因此,要将store object 添加到列表的末尾(尽管效率不高),请写下:

val s = new Store(1)

val newList = list :+ s // list is immutable