千家信息网

每天学一点Scala之 take、takeRight、takeWhile 与 filter

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,比较简单,直接上例子object takeWhileTest { def main(args: Array[String]): Unit = { val names = List("sp
千家信息网最后更新 2024年11月16日每天学一点Scala之 take、takeRight、takeWhile 与 filter

比较简单,直接上例子

object takeWhileTest {   def main(args: Array[String]): Unit = {      val names = List("spark", "hadoop","kafka","hive", "mesos", "zero", "xyz","marathon")      //需求:将names容器中,获取/过滤出元素长度为4的元素,      //takeWhile, 从第一个元素开始判断,满足条件,就留下,直到遇到第一个不满足的条件的元素,就结束循环      //可见,takeWhile 有可能并不是对所有的元素进行操作的      names.takeWhile(_.length > 4 ).foreach{x => print(x + " ")}      println("\n------------------")      //从左边开始获取2个元素,      names.take(2).foreach{x => print(x + " ")}      println("\n------------------")      //从右边开始获取4个元素,      names.takeRight(4).foreach{x => print(x + " ")}      println("\n------------------")      //filter, 同样,满足条件,就留下。是对所有的元素,进行操作的      names.filter(_.length > 4).foreach{x => print(x + " ")}//将"xyz"元素,过滤掉了   }}

结果:

spark hadoop kafka ------------------spark hadoop ------------------mesos zero xyz marathon ------------------spark hadoop kafka mesos marathon


同样,marathon源码中,也有体现,如下:



总结:

take(3)---> 表示,取出前3个元素

takeRight(3)----> 表示,从后面/右边开始获取,取出3个元素

takeWhile()---> 表示,从左边开始,将满足条件的元素取出来,直到遇到第一个不满足条件的元素

filter --> 表示,取出所有满足条件的元素






0