目录
摘要
List 可变性,创建,空 List,List 组成,::,可变 List
集合
List
概念
List
在 Scala 中是不可变的,每次插入新元素实际是生成新的对象。
定义 List
- “List” 可以直接通过
apply()
函数进行定义。 - “空 List” 为
Nil
。 - 一个”非空 List” 是由含有一个元素的头部及含有其余元素的尾部构成的。
var digits = List(1, 2)
println(digits) //List(1, 2)
val empty = List()
println(empty == Nil) //true
List 构造器
特殊符号 ::
可以用于构造 List。::
具有右结合性,即 A :: B :: C
会被翻译成 A :: (B :: C)
val newDigits = 5 :: digits
println(newDigits) //List(5, 1, 2)
因为右结合性的原则,所以 ::
右边只能出现 List,即 5 :: digits
不能写成 digits :: 5
。
List 的基本构造与方法
head
返回 List 头部,空 List 会报异常tail
返回 List 中除了头部的部分,空 List 会报异常tail.head
sum
对 List 的值进行累加
var digits = List(1, 2, 3)
println(digits.head) //1
println(digits.tail) //List(2, 3)
println(digits.tail.head) //2
println(digits.sum) //6
List 的模式匹配
在 Scala 中,::
实际是通过定义 case class 来实现的。
def isort(xs: List[Int]): List[Int] = xs match {
case List() => List()
case x :: xs1 => {
println("x", x, xs1);
insert(x, isort(xs1))
}
}
def insert(x: Int, xs: List[Int]): List[Int] = xs match {
case List() => List(x)
case y :: ys => if (x <= y) x :: xs else y :: insert(x, ys)
}
val numbers = List(9, 5, 1, 3)
val newNumbers = isort(numbers)
println("newNumbers", newNumbers) //(newNumbers,List(1, 3, 5, 9))
MutableList
概述
MutableList 是可变的 List。
使用
var list = new mutable.MutableList[Int]
list +=(2, 3, 5)