遍历操作
映射的遍历
用foreach:
university foreach {case(k,v) => println(k+":"+v)} //等同于university.foreach {case(k,v) => println(k+":"+v)}
也可以用下面形式:
university foreach {kv => println(kv._1+":"+kv._2)}
map操作与flatmap操作
map是针对集合的典型变换操作,他将某个函数应用到集合中的每个元素并产生一个结果集合。
val books = List("hadoop", "spark", "hive")
book.map(s => s.toUpperCase)
-->输出List(HADOOP, SPARK, HIVE)
flatMap是对Map的一种扩展。在flatMap中会包含一个传入的函数,该函数对每一个输入都处理返回为一个集合而非一个元素,然后flatMap将生成的多个集合拼接成为一个集合。
val myList = List("hadoop","spark","hive")
myList.flatMap(x => x.toList)
-->输出 List[Char] = List(h, a, d, o, o, p, h, i, v, e)
filter操作
遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。Scala中可以同构filter操作来实现。
1、创建一个映射
val university = Map("SWJTU" -> "southwest jiaotong University", "THU" -> "Tsinghua University", "PKU"->"Peking University")
2、采用filter操作过滤得到包含jiaotong 的元素
val jiaotongU = university.filter{kv => kv._2 contains "jiaotong"}
3、采用filter过滤得到以P开头的学校
val PUniversity = university.filter{kv => kv._2 startsWith "P"}
reduce操作
reduce作为一种二元操作来对集合中的元素进行规约
reduce包含两种操作:reduceLeft和reduceRight,前者从集合的头部开始操作,后者从集合的尾部开始操作。
val myList = List(1,2,3,4,5)
val rl = myList.reduceLeft(_+_) //1+2=3,3+3=6,6+4=10,10+5=15
-->输出:15
val rr = muList.reduceRight(_+_) //4+5=9,9+3=12,12+2=14,14+1=15
-->输出:15
fold操作
fold折叠操作与reduce规约操作有些类似,但是flod操作需要给一个初始的种子值,并以该值作为上下文,处理集合中的每个元素。
val myList = List(1,2,3,4,5)
myList.flod(10)(_*_) //
-->输出: Int = 1200
网友评论