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。

// 定义Listval list1: List[Int] = List(1, 2, 3)val list2: List[Int] = 1 :: 2 :: 3 :: Nilval list3: List[Any] = list1 :: list2val list4: List[Int] = list1 ::: list2println(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 +: list1println(list5_2) // List(100, 1, 2, 3)val list5_3 = 100 :: list1println(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 :+ 4println(list6_2) // List(1, 2, 3, 4)

遍历的同数组,这里不做演示。

可变ListBuffer

定义ListBuffer

// 定义ListBufferval list1: ListBuffer[Int] = ListBuffer()val list2: ListBuffer[Int] = ListBuffer(1, 2, 3)println(list1) // ListBuffer()println(list2) // ListBuffer(1, 2, 3)

读取ListBuffer,同上。
批改指定元素:

list2(0) = 11println(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 += 5println(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 -= 4println(list2) // ListBuffer(101, 5, 6)

遍历的同数组,这里不做演示。