scala的集合也分爲不可變集合和可變集合。集合包括序列Seq、集合Set、映射Map,這幾個也是分爲不可變和可變的。segmentfault
定義List,包括List的apply、:: Nil、以及:::來定義。
Nil是空的集合,::是head元素和tail列表組成一個新的列表,並且這個是從後面開始計算的,因此下面的也相對於3::Nil先計算,而後是2::(3 :: Nil),最後是1::(2::(3 :: Nil))。
若是head是一個List,那用::的話,第一個元素仍是List,因此要用:::來造成新的列表,能夠看看下面的list三、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:app
// 取指定位置 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
新增元素:scala
// 前面加元素 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)
遍歷的同數組,這裏不作演示。code
定義ListBufferrem
// 定義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)
新增元素:get
// 後面加元素 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)
刪除元素,這裏相似數組it
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)
遍歷的同數組,這裏不作演示。ast