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)
    
      }
    }
    

      输出结果为

  • 相关阅读:
    线段树的一种简化实现[原] by 踏雪赤兔
    C 语言qsort 函数详解
    【转载】Amit’s A star Page 中译文
    Poj3468 线段树 成段更新
    在VMware的CentOS中运行Cadence IC 615的怪现象
    安装非认证的chrome插件和设置文件夹的权限
    [模拟IC]基础知识1
    如何删除 Windows.old 文件夹?
    美国签证面签经历
    三个不同属性的GTD工具
  • 原文地址:https://www.cnblogs.com/cosmos-wong/p/11436488.html
Copyright © 2011-2022 走看看