1、数组
定长数组
val a = new Array[String](5) //长度为五
a.length //5
a(1)="hello" //赋值
val b = Array("hadoop","spark") //底层调用的apply,在apply中调用new Array[]()
val c = Array(1,2,3,4,5,6,7,8,9)
c.mkString //123456789
c.mkString(",") //1,2,3,4,5,6,7,8,9
c.mkString("<",",",">") //<1,2,3,4,5,6,7,8,9>
c.toString //[I@9e54c59
变长数组
val d = scala.collection.mutable.ArrayBuffer[Int]()
d.length //0
d += 1
d += 2
d += (3,4,5)
d ++= Array(6,7,8)
d.insert(0,0) //n:Int,eles:A*
d.remove(1,1) //n:Int,count:Int 从n开始删除count个元素
d.trimEnd(2) //删除后两个,从尾巴开始删
println(d) //ArrayBuffer(1,2)
for(ele <- d){
println(ele)
}
for(i <- 0 until c.length)
for(i <- (0 until c.length).reverse) //从后往前遍历
d.toArray //变成定长数组,从变长到鼎昌
2、List
Nil //scala.collection.immutable.Nil.type = List() 即Nil是空集合
定长
val l = List(1,2,3,4,5) //一个List是油一个head和一个tail构成的
l.head //1
l.tail //List(2,3,4,5)
val l2 = 1 ::Nil //List(1)
val l3 = 2 :: l2 //List(2,1)
可变
val l5 = scala.collection.mutable.ListBuffer[Int]()
l5 += 2
l5 +=(3,4,5)
l5 ++= List(6,7,8,9)
l5 -=2
l5 -=(1,3) //有就删,没有就不管,不会报错
l5.isEmpty
l5.head //与List相同
l5.tail
l5.tail.head
l5.toList
l5.toArray
def sum(num:Int*):Int={
if(nums.length == 0){
0
}else{
nums.head + sum(nums.tail:_*) //. :_*将Seq转变为可变参数
}
}
3、Set(无序,不重复)
不可变
val set = Set(1,2,2,1,4,3) //scala.collection.immutable.Set[Int] = Set(1,2,4,3)
可变
val set = scala.collection.mutable.Set[Int]()
//用法与list相同
4、Map
不可变
val a = Map("pk"->18,"messi"->20)
a("pk") //18
a("pk")=19 //报错
可变
val b = scala.collection.mutable.Map("pk"->18,"messi"->20)
b("pk")=19 //可以运行
b.getOrElse("pk",9) //有就取,没有就用9
b.get("pk") //Option[Int]=Some(18)
b.get("pk").get //18
b("lisi")=40
b += ("wangwu"->4,"zhaoliu"->5)
b -= "wangwu" //只需要指定key
val c = scala.collection.mutable.HashMap[String,Int]() //c:scala.collection.mutable.HashMap[String,Int]=Map()
遍历
for((key,value)<-b){
println(key +":"+value)
}
for(key <- b.keySet){
println(key + ":"+ b.getOrElse(key,9))
}
for(value <- b.values){
println(value)
}
for((key,_)<-b){
println(key +":"+b.getOrElse(key,9))
}
5、Option&Some&None
case object None extedns Option[Nothing]{
def isEmpty = true
def get = throw new NoSuchElementException("None.get")
}
final case class Some[+A](x: A) extends Option[A]{
def isEmpty = false
def get = x
}
6、Tuple
元组
val a = (1,2,3,4,5)
a._1
a._2
遍历
for (i <- 0 until (a.productArity)){
println(a.productElement(i))
}
val hostPort =("localhost",8080)
hostPort._1
hostPort._2