scala基础4⃣️集合

来源:互联网 发布:快速背单词软件 编辑:程序博客网 时间:2024/06/06 18:18

map/set/list

==============================================集合==========================================

@可变集合可以在适当的地方被更新或扩展,意味着你可以修改、添加、移除一个集合的元素。

@而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。 但是这些操作都将返回一个新的集合,同时原来的集合不发生改变
@不可变的都在immutable里,可变的都在mutable里





---------------------------List-------------------------------

//不可变
val l=List(1,2,3,4,5)
println(l.head)  //第一个元素
println(l.tail)  //除了第一个元素外的其他集合

val l2=2::Nil  //Nil为空List集合对象
println(l2)
val l3=1::l2
//val l3=l2::1  //错误,List需要写在右边
println(l3)
val l4=1::2::3::Nil
println(l4)

val l5="aaa"::6.6::l  //元素可以是任意类型
println(l5)

-------------------------------ListBuffer------------------

//可变
val l5=scala.collection.mutable.ListBuffer[Int]();
l5+=1;
l5+=(2,3)
l5++=List(4,5,6)  //-=和--=类似
for(x<-l5)
  print(x+" ")
println("\n"+l5)
println(l5.isEmpty)
println(l5.tail.head)  //2


val l=l5.toList  //转为不可变List[Int]
val a=l5.toArray  //转为数组Array[Int]


-------------------------immutable.Set--------------------------

//不可变
val s=Set(1,2)
//s+=3  //错误,这是不可变的
s+3  //set本身并不发生变化
//val s1=3+s //错误,Set必需写在左边
println("不变:"+s)
println(s+3)    //-和--类似
println(s+3+4+5)
println(s+(3,4,5))
println(s++List(3,4,5))
println(s++Set(3,4,5))

//有序Set
val s2=scala.collection.immutable.SortedSet(2,1,4,5,3)
println(s2)

-------------------------------------mutable.Set-----------------------

//可变
val s=scala.collection.mutable.Set(1,2)
s+=3  //注意,可变Set可以使用+=
s++=Set(3,4,5)
println(s)

var s2=scala.collection.mutable.SortedSet(9,1,8,5,6)
println(s2)


-----------------------------------immutable.Map---------------------------

//不可变
val m=Map("a"->100,"b"->200)
println(m)
println(m("a"))
//m("a")=111 //错误
//println(m("c"))  //异常
println(m.getOrElse("c",300))  //当键不存在时,返回默认值

//有序Map,注意:没有mutable.SortedMap
val m1=scala.collection.immutable.SortedMap("b"->200,"c"->300,"a"->100)
println(m1)

---------------------------------------mutable.Map--------------------------------

//可变
val m=scala.collection.mutable.Map("a"->100,"b"->200)
m("a")=101
println(m("a"))
println(m.getOrElse("c",300))

m+=("x"->300,"y"->400)
m-="b"
println(m)

---------------------------------------遍历Map-----------------------------------

//可变、不可变都可以用
val m=scala.collection.mutable.Map("a"->100,"b"->200,"c"->300,"d"->400)
for((k,v)<-m)
  println(k+" "+v)

for(k<-m.keySet)
  println(k+": "+m(k))

for((k,_)<-m)
  println(k+" "+m(k))

for(v<-m.values)
  println("value: "+v)
for((_,v) <- m)
  println(v)


-----------------------------------------元组Tuple----------------------------

//相当于Object[],元素的类型可以不一样
val a=(1,2,3,"aaa","bbb")//类型任意
println(a._1)  //_1表示元组的第一个元素
println(a._4)

for(i <- 0 until a.productArity)  //注意:元组下标的起点依然是0
  println(a.productElement(i))




原创粉丝点击