使用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) } }
输出结果为