zoukankan      html  css  js  c++  java
  • 使用folderLeft函数统计字母出现的次数

     实例:统计字符串中字母出现的次数

    import scala.collection.mutable
    
    object Demo_018{
    
      def main(args: Array[String]): Unit = {
        val sentence = "AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"
        val map=mutable.Map[Char,Int]() //构建可变map集合,实例化时使用的是apply方法进行实例化
         sentence.foldLeft(map)(method) //使用foldeLeft函数将每次的执行结果,以元组的形式装入到map中
        println(map)
      }
      def method(temp:mutable.Map[Char,Int],param:Char): mutable.Map[Char,Int] ={
           //这种添加元素的方式,适用于mutable.Map,不可用于immutable添加元素
           temp += (param -> (temp.getOrElse(param,0)+1))
           //这种添加元素的方式,适用于immutable.Map
           //temp + (param -> (temp.getOrElse(param,0)+1))
      }
    }
    

    运行结果:

     除了使用上面的方式外,还可以有更简化的方式

    val result4 = array.map((_,1)).groupBy(_._1).map(x => (x._1,x._2.length))
    

    下面是它的详细说明

    object Demo_018_01 {
      def main(args: Array[String]): Unit = {
        val sentence = "AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"
        val array = sentence.toCharArray
    //    val result1 = array.map((x:Char)=>(x,1))
        val result1 = array.map((_,1))
       // val result2 = result1.groupBy((x:(Char,Int)) => x._1)
        val result2 = result1.groupBy(_._1)
        //val result3 = result2.map((x:(Char,Array[(Char,Int)]))=>(x._1,x._2.length))
        val result3 = result2.map(x => (x._1,x._2.length))
        println(result3)
        //合并写法
        val result4 = array.map((_,1)).groupBy(_._1).map(x => (x._1,x._2.length))
        println(result4)
    
      }
    }
    

      输出结果为

  • 相关阅读:
    Android ADB 基本命令
    Android Studio修改包名
    Android开发之SurfaceView
    Android呼吸灯效果实现
    Android xml 绘制图形
    设计模式--代理模式C++实现
    设计模式--建造者模式C++实现
    设计模式--模板方法模式C++实现
    设计模式--抽象工厂模式C++实现
    设计模式---工厂方法C++实现
  • 原文地址:https://www.cnblogs.com/cosmos-wong/p/11436488.html
Copyright © 2011-2022 走看看