Scala 学习(四) 集合之List

时间:2023-01-31 11:17:35

一,简介

二,不可变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"

    }

}