Scala针对集合的操作

遍历操作

映射的遍历

用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

你可能感兴趣的:(Scala针对集合的操作)