美文网首页
Scala针对集合的操作

Scala针对集合的操作

作者: 0过把火0 | 来源:发表于2018-03-14 16:39 被阅读19次

    遍历操作

    映射的遍历

    用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针对集合的操作

          本文链接:https://www.haomeiwen.com/subject/zxdrfftx.html