正文
一,简介
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" } }