Scala 不可變List列表操作

2021-10-19 12:04:49 字數 3770 閱讀 6252

建立空列表

scala> val list = nil

val list: collection.immutable.nil.type = list()

scala> val list = list()

val list: list[nothing] = list()

建立帶初始值的列表

scala> val list = list("aa", "bb", "cc")

val list: list[string] = list(aa, bb, cc)

scala> val list = "xx" :: "yy" :: "zz" :: nil

val list: list[string] = list(xx, yy, zz)

列表連線(生成新的列表)

scala> list ::: list("ee", "ff")  //:::連線list列表

val res10: list[string] = list(xx, yy, zz, ee, ff)

scala> list ::: set("22", "33") //:::不能連線set集合

^error: value ::: is not a member of scala.collection.immutable.set[string]

did you mean ++:?

scala> list ++ list("11", "22") //++連線集合(list、set等)

val res11: list[string] = list(xx, yy, zz, 11, 22)

scala> list ++ set("22", "33") //++連線集合(list、set等)

val res12: list[string] = list(xx, yy, zz, 22, 33)

列表新增元素(生成新的列表)

scala> list :+ "22"   //向列表後面新增元素

val res13: list[string] = list(xx, yy, zz, 22)

scala> "33" +: list //向列表前面新增元素

val res14: list[string] = list(33, xx, yy, zz)

scala> "33" :: list //向列表前面新增元素

val res15: list[string] = list(33, xx, yy, zz)

列表刪除元素(生成新的列表)

列表是不可變的資料結構,所以需要使用filter , partition , splitat , take等過濾方法過濾掉元素,並生成新的列表

scala> list.filter(x => x > "xx")

val res19: list[string] = list(yy, zz)

scala> list.filter(_ > "xx")

val res20: list[string] = list(yy, zz)

其他操作

scala> val list = list("aa", "yy", "cc", "xx", "bb")

val list: list[string] = list(aa, yy, cc, xx, bb)

scala> list.isempty //判斷list是否為空

val res39: boolean = false

scala> list.length //獲取list的長度

val res40: int = 5

scala> list.size //獲取list的長度

val res41: int = 5

scala> list(0) //獲取指定索引的元素

val res42: string = aa

scala> list(3)

val res43: string = xx

scala> list.exists(_ == "aa") //判斷元素是否存在

val res52: boolean = true

scala> list.forall(_>"e") //判斷所有元素是滿足條件

val res54: boolean = false

scala> list.count(_ > "e") //獲取指定條件的元素數量

val res46: int = 2

scala> list.drop(2) //獲取去掉指定個數的前面元素的新列表

val res49: list[string] = list(cc, xx, bb)

scala> list.dropright(2) //獲取去掉指定個數的後面元素的新列表

val res50: list[string] = list(aa, yy, cc)

scala> list.reverse //反轉list元素

val res27: list[string] = list(bb, xx, cc, yy, aa)

scala> list.sorted //排序(公升序)

val res28: list[string] = list(aa, bb, cc, xx, yy)

scala> list.mkstring //轉換成字串,預設分隔符位空

val res29: string = aayyccxxbb

scala> list.mkstring(",") //用逗號隔開的字串

val res30: string = aa,yy,cc,xx,bb

scala> list

val res32: list[string] = list(aa, yy, cc, xx, bb)

scala> list.head //獲取第乙個元素

val res33: string = aa

scala> list.last //獲取最後乙個元素

val res34: string = bb

scala> list.init //剔除最後乙個元素,生成新列表

val res35: list[string] = list(aa, yy, cc, xx)

scala> list.tail //剔除第乙個元素,生成新列表

val res36: list[string] = list(yy, cc, xx, bb)

scala> list.map(_+"1") //將每個元素修改位新的元素並返回新物件

val res58: list[string] = list(aa1, yy1, cc1, xx1, bb1)

scala> val a = list("hadoop hive spark flink flume", "kudu hbase sqoop storm")

val a: list[string] = list(hadoop hive spark flink flume, kudu hbase sqoop storm)

scala> a.flatmap(_.split(" ")) //flatmap包含兩個操作:會將每乙個輸入物件輸入對映為乙個新集合,然後把這些新集合連成乙個大集合。

val res61: list[string] = list(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)

scala不可變集set

set set 集 是代表沒有重複元素的集合。set具備以下性質 元素不重複 不保證插入順序 scala中的集也分為兩種,一種是不可變集,另一種是可變集。不可變集 定義語法 建立乙個空的不可變集,語法格式 scala val var 變數名 set型別 給定元素來建立乙個不可變集,語法格式 scal...

Scala的可變集合和不可變集合

scala 的集合有三大類 序列 seq 集 set 對映 map,所有的集合都擴充套件自 iterable 特質 在 scala 中集合有可變 mutable 和不可變 immutable 兩種型別,immutable 型別的集合 初始化後就不能改變了 注意與 val 修飾的變數進行區別 scal...

Scala入門 不可變集與可變集

setset 集 是代表沒有重複元素的集合。set具備以下性質 元素不重複 不保證插入順序 scala中的集也分為兩種,一種是不可變集,另一種是可變集。語法 建立乙個空的不可變集,語法格式 val var 變數名 set 型別 給定元素來建立乙個不可變集,語法格式 val var 變數名 set 元...