程序员人生 网站导航

大数据系列修炼-Scala课程35

栏目:框架设计时间:2016-11-05 08:56:42

大数据系列修炼-Scala课程35


核心内容:
1、scala中List的map、flatMap、foreach、filter操作代码实战


1、Scala中List的map、flatMap、foreach、filter操作代码实战

1>map就是对集合中的所有元素履行1个具体的函数,将函数作用在数值上,并返回1个新的集合结果
2>flatMap:首先对List内部的每一个成员进行map操作,map产生的结果会是1个List(List(char)),然后在产生结果的基础上
进行flat–将map操作后的结果进行合并,产生合并以后的集合(List[char])。
简单来讲:flatMap首先履行map操作,然后对产生集合的结果进行合并,合并出1个新的集合结果
toList作用在具体的字符串上面:将字符串的list集合变成字符的list集合:List[List[Char]]
3>foreach:就是对集合中的每个元素履行1个具体的函数,将函数作用在数值上,与map不同的是,foreach不产生具体的
结果,结果是Unit类型的。
4>filter:过滤出列表中符合条件的元素,filter结构中传进来的参数是1个结构为布尔类型的函数。


实例程序1:

//map函数:就是对集合中的所有元素履行1个具体的函数,将函数作用在数值上,并产生1个新的集合结果 val arr = Array(10,20,30) //> arr : Array[Int] = Array(10, 20, 30) val arr2 = arr.map((x:Int)=>x+100) //> arr2 : Array[Int] = Array(110, 120, 130) //将List集合中的每个元素加10,并返回1个新的集合结果 val list1 = List(10,20,30,40) //> list1 : List[Int] = List(10, 20, 30, 40) list1.map((x:Int)=>x+10) //> res0: List[Int] = List(20, 30, 40, 50) list1.map((x)=>x+10) //> res1: List[Int] = List(20, 30, 40, 50) list1.map(_+10) //> res2: List[Int] = List(20, 30, 40, 50) val data = List("Scala","Hadoop","Spark") //> data : List[String] = List(Scala, Hadoop, Spark) data.toList //> res3: List[String] = List(Scala, Hadoop, Spark) data.toList.reverse //> res4: List[String] = List(Spark, Hadoop, Scala) //toList作用在具体的字符串上面:将字符串的list集合变成字符的list集合:List[List[Char]] data.map(_.toList) //> res5: List[List[Char]] = List(List(S, c, a, l, a), List(H, a, d, o, o, p), L //| ist(S, p, a, r, k)) data.flatMap(_.toList) //> res6: List[Char] = List(S, c, a, l, a, H, a, d, o, o, p, S, p, a, r, k) data.map(_.toList.reverse.mkString("\t")) //> res7: List[String] = List(a l a c S, p o o //| d a H, k r a p S) //将List集合变成1个字符串 data.toList.reverse.mkString("---") //> res8: String = Spark---Hadoop---Scala data.map((str:String)=>str.length) //> res9: List[Int] = List(5, 6, 5) data.map(_.length) //> res10: List[Int] = List(5, 6, 5) data.map(_.toList.reverse.mkString) //> res11: List[String] = List(alacS, poodaH, krapS)

实例程序2:

object App { def main(args:Array[String]):Unit= { val list = List(10,20,30,40) val list2 = list.foreach((x:Int)=>x+10) val list3 = list.map((x:Int)=>x+10) println(list2) println(list3) var sum = 0 list.foreach(sum+=_) println(sum) val list4 = List.range(1, 11).filter(_%2==0) println(list4) val list5 = List("spark","hadoop","hbase").filter(_.length==5) println(list5) } }

运行结果:

() List(20, 30, 40, 50) 100 List(2, 4, 6, 8, 10) List(spark, hbase)
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐