1、序列Seq
- 数组:不可变Array、可变ArrayBuffer
- list集合:不可变List、可变ListBuffer
- 队列:可变mutable.Queue
2、数组
1)不可变数组 Array
import scala.collection.mutable.ArrayBuffer
object Scala01_Array {
def main(args: Array[String]): Unit = {
//java数组: int[] inst = new int[4] / int[] inst = new int[4]{1,2,3,4}
// 获取 inst[0] 结果:1
// 赋值:inst[1] = 9
//scala
//不可变数组 Array
//创建(两种)
val a :Array[Int] = new Array[Int](3)
val ints :Array[Int] = Array(1,2,3) //直接使用Array,因为有apply方法
//长度
println(ints.length)
// 获取
println(ints(0))
// 数据的几种打印方式
println(ints.mkString(",")) //1,2,3
for (elem <- ints) {
println(elem)
}
//foreach:需要(Int)=>Unit,一个函数类型
ints.foreach(i=> {println(i)})
ints.foreach(i=> println(i))
ints.foreach(println(_))
ints.foreach(println)
println(ints) // [I@48140564
println(ints.+("sss")) //[I@48140564sss
//更新(Array是不可变数组,引用地址不可变,内容可变,所以可以更新)
ints.update(2,5) // 或者 ints(2) = 5
println(ints.mkString(",")) //1,2,5
// 增加:因为长度固定,所以会生成新的数组
val ints1: Array[Int] = ints :+ 9
val ints2: Array[Int] = 9 +: ints //:贴近数组的一方
val ints3: Array[Int] =ints1 ++ ints2
println(ints1.mkString(",")) //1,2,5,9
println(ints2.mkString(",")) //9,1,2,5
println(ints == ints1) //false ,内存地址不一样,inst1是新的数组
println(ints3.mkString(",")) //1,2,5,9,9,1,2,5
}
}
2、可变数组 ArrayBuffer
import scala.collection.mutable.ArrayBuffer
object Scala01_Array {
def main(args: Array[String]): Unit = {
//java数组: int[] inst = new int[4] / int[] inst = new int[4]{1,2,3,4}
// 获取 inst[0] 结果:1
// 赋值:inst[1] = 9
//scala
//不可变数组
val arrayBuffer: ArrayBuffer[Int] = ArrayBuffer(5,6,7,8)
//修改
arrayBuffer(0) = 9
println(arrayBuffer.mkString(",")) // 9,6,7,8
//增加
arrayBuffer.append(77) //返回值是Unit,不是新数组
val buffer1: ArrayBuffer[Int] = arrayBuffer += 88
arrayBuffer.insert(2,55)
println(arrayBuffer.mkString(",")) //9,6,55,7,8,77,88
println(arrayBuffer == buffer1) //true 同一个引用地址
//删除
//remove一个参数:代表索引,返回值是删除的值
val i: Int = arrayBuffer.remove(2)
println(arrayBuffer.mkString(",")) //9,6,7,88
arrayBuffer.remove(3,2)//返回值是Unit,不是新数组
println(arrayBuffer.mkString(",")) //9,6,7,88
}
}
3、可变数组与不可变数组之间转换
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
object Scala01_Array {
def main(args: Array[String]): Unit = {
//不可变Aarry -> 可变ArrayBuffer
val buffer: mutable.Buffer[Int] = ints.toBuffer
//可变ArrayBuffer -> 不可变Aarry
val array: Array[Int] = arrayBuffer.toArray
}
}
3、List集合
1)不可变List
import scala.collection.mutable
import scala.collection.mutable.ListBuffer
object Scala02_List {
def main(args: Array[String]): Unit = {
//seq
//不可变
val list: List[Int] = List(1,2,3,4)
//获取
println(list(2)) // 3
//增加数据
val list1: List[Int] = list :+ 1
val list2: List[Int] = 1 +: list
println(list1.mkString(",")) //1,2,3,4,1
println(list2.mkString(",")) //1,1,2,3,4
println(list1 == list) //false list1是集合
println(list2 == list)//false list2是集合
val list4: List[Int] = list1 ++ list2
println(list4.mkString(",")) //1,2,3,4,1,1,1,2,3,4
val list5: List[Int] = list.::(9) // list :: 9这种写法报错
println(list5.mkString(",")) // 9,1,2,3,4
//list中冒号运算符:从右到左
val list6: List[Int] = 7 :: 8 :: 9 ::list //(7 :: (8 :: (9 ::list)))
println(list6.mkString(",")) //7,8,9,1,2,3,4
val list7 = 9 :: list1 :: list2
println(list7.mkString(",")) //List(9, List(1, 2, 3, 4, 1), 1, 1, 2, 3, 4)
val list8 = 9 :: list1 ::: list2
println(list8.mkString(",")) //9,1,2,3,4,1,1,1,2,3,4
//特殊的集合(Nil空集合)
println(List()) //List()
println(Nil) // List()
val list9 =1 :: 2 :: Nil
println(list9.mkString(",")) //1,2
//删除
val list10: List[Int] = list1.drop(2)
println(list10.mkString(",")) //3,4,1 (前两个都删掉了)
println(list10 == list1) //false
}
}
2)可变ListBuffer集合
import scala.collection.mutable
import scala.collection.mutable.ListBuffer
object Scala02_List {
def main(args: Array[String]): Unit = {
//可变集合ListBuffer
var listBuffer = ListBuffer(5,6,7,8)
/*
//具有通用方法
listBuffer.insert()
listBuffer.update()
listBuffer.remove()
listBuffer.drop()*/
//集合属性
//头
println(listBuffer.head) // 5
//最后一个
println(listBuffer.last) //8
//初始化(除了最后一个)
println(listBuffer.init) //ListBuffer(5, 6, 7)
//尾(除了头以外的)
println(listBuffer.tail) //ListBuffer(6, 7, 8)
}
}
4、队列:可变mutable.Queue
import scala.collection.mutable
import scala.collection.mutable.ListBuffer
object Scala02_List {
def main(args: Array[String]): Unit = {
// 队列 可变的 先进先出
val queue: mutable.Queue[Int] = mutable.Queue(1,2,3,4)
//放入
queue.enqueue(5)
println(queue) //Queue(1, 2, 3, 4, 5)
//取出(队列中取出就是删除)
queue.dequeue()
println(i) //1
println(queue) //Queue(1, 2, 3, 4, 5)
}
}