使用folderLeft函数统计字母出现的次数

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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))
  }
}

 

运行结果:

 

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

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

下面是它的详细说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)
 
  }
}

  输出结果为

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   cosmoswong  阅读(418)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示