建立空列表
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 元...