不可变List列表操作
创建空列表
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)