Scala 不可变List列表操作

不可变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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军大_j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值