美文网首页
scala学习笔记

scala学习笔记

作者: 进击的小恶魔 | 来源:发表于2019-04-01 04:37 被阅读0次
$ import scala.io.Source
$ val lines = Source.fromFile("/home/badou/Documents/code/mr/mr_wc/The_Man_of_Property.txt").getLines().toList
lines: List[String] = List(Preface, “The.....
$ lines.flatMap(_.split(" ")).map(x=>(x,1))
List[(String, Int)] = List((Preface,1), (“The,1), (....
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1)
 scala.collection.immutable.Map[String,List[(String, Int)]] = Map(unlikely. -> List((unlikely.,1)), .......
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.length))
scala.collection.immutable.Map[String,Int] = Map(unlikely. -> 1, come? -> 1, unexpectedly; -> 1,.....


<==>$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.size))

<==> $ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum))

这三者输出都一样

排序(方法一)
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toList.sortBy(_._2)
List[(String, Int)] = List((unlikely.,1), (come?,1), (unexpectedly;,1), (easel.,1), (hand’,1), (buns,1), ....

降序排序
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toList.sortBy(_._2).reverse
List[(String, Int)] = List((the,5144), (of,3407), (to,2782), (and,2573), (a,2543), (he,2139), (his,1912), 

取topN
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toList.sortBy(_._2).reverse.slice(0,10)
 List[(String, Int)] = List((the,5144), (of,3407), (to,2782), (and,2573), (a,2543), (he,2139), (his,1912), (was,1702), (in,1694), (had,1526))

排序(方法2) sortWith
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toArray.sortWith(_._2>_._2).slice(0,10)
Array[(String, Int)] = Array((the,5144), (of,3407), (to,2782), (and,2573), (a,2543), (he,2139), (his,1912), (was,1702), (in,1694), (had,1526))

排序(方法2) toList和toArrray效果一样
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).map(x=>(x._1,x._2.map(_._2).sum)).toList.sortWith(_._2>_._2).slice(0,10)
 List[(String, Int)] = List((the,5144), (of,3407), (to,2782), (and,2573), (a,2543), (he,2139), (his,1912), (was,1702), (in,1694), (had,1526))

排序(方法3)  mapValues()
$ lines.flatMap(_.split(" ")).map(x=>(x,1)).groupBy(_._1).mapValues(_.size).toArray.sortWith(_._2>_._2).slice(0,10)
Array[(String, Int)] = Array((the,5144), (of,3407), (to,2782), (and,2573), (a,2543), (he,2139), (his,1912), (was,1702), (in,1694), (had,1526))


详解:
$ val b = Array(("a",1),("b",2))
输出:b: Array[(String, Int)] = Array((a,1), (b,2))
$ b.sortWith((t1,t2)=>(t1._2>t2._2))
输出:Array[(String, Int)] = Array((b,2), (a,1))
tuple按照第二个值排序,对于传入的两个tuple,t1和t2,比较第二个值的大小,第二个值大的tuple排在前面。
$简写 b.sortWith(_._2>_._2)
输出:Array[(String, Int)] = Array((b,2), (a,1))

相关文章

  • Scala集合

    附上Effective Scala:Effective Scala学习笔记摘抄于Twitter scala文档:T...

  • Scala相关文章索引(2)

    基本常识 scala编程第17章学习笔记(1)——集合类型 scala Map类型笔记 scala代码风格指南--...

  • 《Scala 程序设计》学习笔记 说明

    本笔记是我在学习完 Scala 语法后,重学 Scala 时记录的。笔记中的内容侧重 Scala 和 函数式语言的...

  • Scala学习笔记(八) 模式匹配

    1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函...

  • Scala基础

    学习笔记摘抄于Twitter scala文档:Twitter.github.ionext:Scala类&对象(一)...

  • Scala笔记

    Scala基础 学习twitter的scala教程的笔记 函数 函数定义,scala语法中可以使用多种方式定义函数...

  • scala 入门学习

    Scala学习笔记: 1.1 scala的基础语法 声明与定义(赋值):声明变量时可以指定类型,不指定也可以自动识...

  • Scala学习笔记

    这篇文章是我跟着视频学,再加上看博客总结的Scala关键知识点,用来开发Spark完全够用。 第一节:基础 变量声...

  • Scala学习笔记

    Scala笔记 基础教程 http://www.runoob.com/scala/currying-functio...

  • scala学习笔记

    Scalable 编程语言特点(可伸缩的,既可以编写小脚本,又可以写服务端的大程序) 纯正的面向对象语言 函数式语...

网友评论

      本文标题:scala学习笔记

      本文链接:https://www.haomeiwen.com/subject/brzpbqtx.html