一,简介
二,不可变List
三,可变ListBuffer
正文
一,简介
Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是。而ListBuffer元素和长度都是可变的。该多用List而不是Array
二,不可变List
这里的不可变,内容后长度都不可变
object ListDemo {
def main(args: Array[String]): Unit = {
var li = List(1, 3, 4)
// 在原list上前面添加一个元素,形成一个新的list
var li2 = 0 :: li
print(li2.toBuffer+"\n") // ArrayBuffer(0, 1, 3, 4)
var li3 = li.::(5)
print(li3.toBuffer+"\n") // ArrayBuffer(5, 1, 3, 4)
var li4 = 6 +: li
print(li4.toBuffer+"\n") // ArrayBuffer(6, 1, 3, 4)
// 在list后面添加一个新的元素,形成一个新的list
var li5 = li :+ 3
print(li5.toBuffer+"\n") // ArrayBuffer(1, 3, 4, 3)
// 两个list相加
var li6 = li2 ++ li3
print(li6.toBuffer+"\n") // ArrayBuffer(0, 1, 3, 4, 5, 1, 3, 4)
var li7 = li2 ++: li3
print(li7.toBuffer+"\n") // ArrayBuffer(0, 1, 3, 4, 5, 1, 3, 4)
// 在前面添加一个list,形成一个新的list
var li8 = li.:::(li2)
print(li8.toBuffer+"\n") // ArrayBuffer(0, 1, 3, 4, 1, 3, 4)
}
}
三,可变ListBuffer
长度和内容都可变
import scala.collection.mutable.ListBuffer
object ListDemo2 {
def main(args: Array[String]): Unit = {
val li = ListBuffer[String]()
// 添加
li.append("a")
li += "c"
var li2 = ListBuffer("l", "m")
// 追到到li中,并没有生成新的list
li ++= li2
// 生成了新的li
var li3 = li ++ li2
// 后面追加,形成了新的li
var li4 = li :+ "d"
}
}