scala 的汇合也分为不可变汇合和可变汇合。汇合包含序列 Seq、汇合 Set、映射 Map,这几个也是分为不可变和可变的。
不可变 List
定义 List,包含 List 的 apply、:: Nil、以及::: 来定义。
Nil 是空的汇合,:: 是 head 元素和 tail 列表组成一个新的列表,而且这个是从前面开始计算的,所以上面的也绝对于 3::Nil 先计算,而后是 2::(3 :: Nil),最初是 1::(2::(3 :: Nil))。
如果 head 是一个 List,那用:: 的话,第一个元素还是 List,所以要用::: 来造成新的列表,能够看看上面的 list3、list4。
// 定义 List
val list1: List[Int] = List(1, 2, 3)
val list2: List[Int] = 1 :: 2 :: 3 :: Nil
val list3: List[Any] = list1 :: list2
val list4: List[Int] = list1 ::: list2
println(list1) // List(1, 2, 3)
println(list2) // List(1, 2, 3)
println(list3) // List(List(1, 2, 3), 1, 2, 3)
println(list4) // List(1, 2, 3, 1, 2, 3)a
读取 List:
// 取指定地位
println(list1(0)) // 1
// 取第一个无素
println(list1.head) // 1
// 取第一个无素后的残余列表
println(list1.tail) // List(2, 3)
// 取第二个无素
println(list1.tail.head) // 2
// 取最初一个无素
println(list1.last) // 3
// 取最初一个无素后的残余列表
println(list1.init) // List(1, 2)
// 倒序
println(list1.reverse) // List(3, 2, 1)
// 获取前 N 个元素
println(list1.take(2)) // List(1, 2)
// 字符串拼接
println(list1.mkString("-")) // 1-2-3
新增元素:
// 后面加元素
val list5_1 = list1.+:(100)
println(list5_1) // List(100, 1, 2, 3)
val list5_2 = 100 +: list1
println(list5_2) // List(100, 1, 2, 3)
val list5_3 = 100 :: list1
println(list5_3) // List(100, 1, 2, 3)
val list5_4 = list1.::(100)
println(list5_4) // List(100, 1, 2, 3)
// 前面加元素
val list6_1 = list1.:+(4)
println(list6_1) // List(1, 2, 3, 4)
val list6_2 = list1 :+ 4
println(list6_2) // List(1, 2, 3, 4)
遍历的同数组,这里不做演示。
可变 ListBuffer
定义 ListBuffer
// 定义 ListBuffer
val list1: ListBuffer[Int] = ListBuffer()
val list2: ListBuffer[Int] = ListBuffer(1, 2, 3)
println(list1) // ListBuffer()
println(list2) // ListBuffer(1, 2, 3)
读取 ListBuffer,同上。
批改指定元素:
list2(0) = 11
println(list2) // ListBuffer(11, 2, 3)
list2.update(0, 1)
println(list2) // ListBuffer(1, 2, 3)
新增元素:
// 前面加元素
list2.+=(4)
println(list2) // ListBuffer(1, 2, 3, 4)
list2 += 5
println(list2) // ListBuffer(1, 2, 3, 4, 5)
list2.append(6)
println(list2) // ListBuffer(1, 2, 3, 4, 5, 6)
// 后面加元素
list2.prepend(100)
println(list2) // ListBuffer(100, 1, 2, 3, 4, 5, 6)
// 指定地位加元素
list2.insert(1, 101)
println(list2) // ListBuffer(100, 101, 1, 2, 3, 4, 5, 6)
删除元素,这里相似数组
list2.remove(0)
println(list2) // ListBuffer(101, 1, 2, 3, 4, 5, 6)
list2.remove(1, 3)
println(list2) // ListBuffer(101, 4, 5, 6)
list2 -= 4
println(list2) // ListBuffer(101, 5, 6)
遍历的同数组,这里不做演示。