计算一个单词出现次数并排序: val arr=Array(“hello,word,hello,haokz,hello,haokz”,“haokz,hello,wang,kong,kong,haokz,hello”,“wang,haokz,hello”)
1.用Array模拟多行内容,每行内容中字符以,号间隔 val arr=Array(“hello,word,hello,haokz,hello,haokz”,“haokz,hello,wang,kong,kong,haokz,hello”,“wang,haokz,hello”) 2.将内容拆分成一个个单词,拆分后,每行内容对应数组,所以上面转换成了嵌套的数组 val m1=arr.map(_.split(","))
3.先剥开嵌套的数组,将一个个数组进行压平 val m2 = m1.flatten
4.对集合中的每个元素进行操作,生成元祖 val m3 = m2.map((_,1))
5.对集合中的元祖进行按照单词进行分组 val m4 = m3.groupBy(_._1)
6.对每个单词求次数,生成map集合 val m5 = m4.map(x=>(x._1,x._2.length))
7.由于不能直接对map对象进行排序,所以需要先转换为List对象 val m6 = m5.toList
8.默认是升序排列 val m7 = m6.sortBy(_._2)
9.降序排列 val m8 = m7.reverse
链式操作:
val shengXu = arr.flatMap(_.split(",")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.length)).toList.sortBy(_._2)总结: 1.scala函数式编程使得代码精简,代码复用,执行效率也高 2.scala支持链式操作 3.函数式编程简单理解 定义一个方法,里面传入自定义的函数/匿名函数. 这个函数由用户根据自己业务需要实现不同的功能
