T
List[T]
myList ::= myElement
myList.last
(4 :: List(1,2,3).reverse).reverse
或者:
List(1,2,3) ::: List(4)
List(1,2,3) :+ 4 Results in List[Int] = List(1, 2, 3, 4)
注意,这个操作的复杂度为O(n)。如果你经常需要这个操作,或者对于很长的列表,考虑使用另一种数据类型(例如ListBuffer)。
Scala中的列表不是为修改而设计的。事实上,你不能在Scala List;它是一个不可变数据结构,就像一个Java字符串。 当你在Scala中“向列表中添加元素”时,你实际上要做的是创建从现有的List中创建新的List。(源) < / p >
List
对于这样的用例,我建议使用ArrayBuffer或ListBuffer,而不是使用列表。这些数据结构被设计为添加新元素。
ArrayBuffer
ListBuffer
最后,在所有操作完成后,可以将缓冲区转换为列表。请看下面的REPL示例:
scala> import scala.collection.mutable.ListBuffer import scala.collection.mutable.ListBuffer scala> var fruits = new ListBuffer[String]() fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer() scala> fruits += "Apple" res0: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple) scala> fruits += "Banana" res1: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana) scala> fruits += "Orange" res2: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana, Orange) scala> val fruitsList = fruits.toList fruitsList: List[String] = List(Apple, Banana, Orange)
var l = List(1,2,3) l = l :+ 4 Result : 1 2 3 4 var ar = Array(4, 5, 6) for(x <- ar) { l = l :+ x } l.foreach(println) Result:1 2 3 4 5 6
将:
var l = List[Int]() for(x <- ar) { l= x :: l } //prepending l.foreach(println) Result:6 5 4 1 2 3
这与其中一个答案相似,但方式不同:
scala> val x = List(1,2,3) x: List[Int] = List(1, 2, 3) scala> val y = x ::: 4 :: Nil y: List[Int] = List(1, 2, 3, 4)
List在Scala中是不可变的
你可以使用MutableList
var l = scala.collection.mutable.MutableList(1,2,3) l += 4