使用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 result 4 = 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 result 1 = array.map(( _ , 1 )) // val result2 = result1.groupBy((x:(Char,Int)) => x._1) val result 2 = result 1 .groupBy( _ . _ 1 ) //val result3 = result2.map((x:(Char,Array[(Char,Int)]))=>(x._1,x._2.length)) val result 3 = result 2 .map(x = > (x. _ 1 ,x. _ 2 .length)) println(result 3 ) //合并写法 val result 4 = array.map(( _ , 1 )).groupBy( _ . _ 1 ).map(x = > (x. _ 1 ,x. _ 2 .length)) println(result 4 ) } } |
输出结果为
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于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保姆级教程