zoukankan      html  css  js  c++  java
  • scala光速入门第三天

    作业:用scala统计一个文件夹下面所有文件的单词出现的总次数
     
    package scala
     
    object WordCounter {
      //导入jar包
      import scala.io.Source
      import java.io._
      //存储单词和个数
      var map = Map.empty[String, Int]
     
      def main(args: Array[String]): Unit = {
        scanDir(new File("D:/workspace"))
        map.foreach(f =>
          println(f)  
        )
      }
     
      def scanDir(dir: File): Unit = {
        dir.listFiles.foreach { file => 
          if(file.isFile()){
            readFile(file)
            println(file)
          }      
        }
      }
     
      def readFile(file: File){
        val f = Source.fromFile(file)
        for (line <- f.getLines()){
          count(line)
        }
      }
     
      def count(line: String) = {
        for(word <- line.split("[,:.!\s?*\/-=+]()><")){
          if(map.contains(word))
            map += (word -> (map(word)+1))
          else
            map += (word -> 1)
        }
      }
    }
     
     
     
     
    DT大数据梦工厂大数据门徒3000第三讲 课堂笔记
    scala函数式编程(简单易读)重中之重
    spark当中的计算都是用scala函数式编程来做
    高级函数:函数里面的参数是函数(与Java最大的区别之一)
    spark基于集合
    函数/变量同是一等公民
     
    定义函数 给变量以函数赋值:
    def fun1(name: String){println(name)}
    var fun1_v = fun1 _//加空格加下划线
    fun1("Spark")
    fun1_v("Scala")
     
    //匿名函数:
    定义名字    参数                函数体
    val fun2 = (content: String) => println(content)
    fun2("Hadoop")
     
    高级函数:
    val hiScala = (content: String) => println(content)
    def bigData(func: (String) => Unit, content: String){func(content)}
    bigData(hiScala, "Spark")
     
    val array = Array(1,2,3,4,5,6,7,8,9)
    array.map(item => 2 * item)
    array.map(item => println(item))
     
    函数的返回值是个函数
    def func_Return(content: String) = (message: String) =>println(message)
    func_Return("Spark")
    def func_Return(content: String) = (message: String) =>println(content+"  "+message)
    val returned = func_Return("Spark")
     
    高级函数具有类型推断的功能
    def spark(func: (String) => Unit, name: String){func(name)}
    spark((name) => println(name), "Scala")
    spark(name => println(name), "Scala")
    spark(name => println, "Scala")
     
    array.map(2*_)
    array.map(2*_).foreach(println(_))
    array.map(2*_).foreach(println)
    array.map(2*_).foreach(println _)
     
    array.map(2*_).filter(_ >10).foreach(println)
     
    闭包就是当变量超出函数范围之外还能够访问
    def scala(content: String) = (message: String) => println(content + ": " + message)
    val funcResult = scala("Spark")
    funcResult("Flink")
     
    //柯里化函数
    def sum(x: Int, y: Int) = x + y
    sum(1,2)
     
    def sum_Curring(x: Int) = (y: Int) => x + y
    sum_Curring(1)(2)
     
    def sum_Curring_Better(x: Int) (y: Int) = x + y
    sum_Curring_Better(1)(3)
     
    (1 to 100).reduceLeft(_+_)//return 5050
     
    val list = List("Scala", "Spark", "Flink")
    val cal = list.map("The content is : " + _)
    list.map(println)
     
    cal.flatMap(_.split(" "))
    cal.flatMap(_.split(" ")).foreach(println)
     
    list.zip(List(10,6,5))
  • 相关阅读:
    Linux下忘记MySQL密码的解决办法
    Jenkins——为什么使用持续集成?
    JBoss7部署EJB连接MySQL
    同一进程中的线程有哪些资源可以共享(转)
    基于ssh开发web项目-用户登录流程
    mysql-5.6.16安装流程
    Spring学习笔记
    Hibernate持久化对象状态、转换方法和操作步骤
    Hibernate配置文件与关联映射介绍
    Java的hashCode方法
  • 原文地址:https://www.cnblogs.com/qq852667211/p/5100191.html
Copyright © 2011-2022 走看看