scala基礎4 集合

2021-08-07 06:53:47 字數 3319 閱讀 2177

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))

Scala學習(4) 集合之Array

不可變陣列 array 將指定的值建立為陣列 val arr array int array 1,2,3,4,5,6,7 獲取陣列中的元素,使用下標獲取 println s first element 獲取陣列長度 println s length size 對陣列中指定下標的元素進行修改 arr ...

scala入門5 集合API

def main args array string unit def main args array string unit def main args array string unit def main args array string unit curr agg curr reduce的執...

java基礎 4 集合的理解

只是我的理解 1.集合出現是因為 陣列在解決變長問題上不喜人。2.集合相當於乙個有彈性的容器 1.陣列是定長的,集合可以初始化長度,但會自動擴容。2.陣列存放什麼型別的值在一開始就要確定下來,而集合可以 泛型 固定型別,可以 不填 接收 任何型別 3.陣列可以存放基本資料型別,而集合只能存放obje...