scala笔记

函数字面量

字面量包括整形字面量、浮点数子面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量和元组字面量

除了函数字面量我们比较陌生以外,其他几种字面量都很容易理解
在这里插入图片描述

 val counter: Int => Int = {
   (value) => value + 1}

匿名函数

    val num1 = (num: Int) => num * 2
    println(num1(1))

闭包

  def main(args: Array[String]): Unit = {
   
    var more = 1
    val addMore = (x:Int) => x + more
    print(addMore(10))
  }

map操作和flatMap操作

  def main(args: Array[String]): Unit = {
   
    // map操作 flatMap操作
    val books = List("Hadoop","Hive","HDFS")
    print(books.map(s => s.toUpperCase) + "\n")
    println(books)
    // flatMap是map的一种扩展,在flatMap中,我们会传入一个函数,
    // 该函数的对每个输入都会返回一个集合(而不是一个元素)
    // 然后 flatMap把生成的多个集合 “拍扁”成为一个集合

    println(books.flatMap(s => s.toUpperCase)) //List(H, A, D, O, O, P, H, I, V, E, H, D, F, S)

  }

filter操作

    val university = Map("XMU"->"Xiamen University","THU"->"Tsinghua University")
    // filter操作可以实现过滤操作
    val universityOfXiamen = university.filter({
   
      kv => {
   
        println(kv);  // 这是一个map
        kv._2 contains ("Xiamen") // 找到key中包含Xiamen的kv
      }
    })
    print(universityOfXiamen)

reduce操作

    // reduce 操作
    val list = List(1,2,3,4,5)
    val res1 = list.reduceLeft(_ + _) //从左往右
    // 1+2 = 3; 3+3 = 6; 6+4=10;10+5 =15
    val res2 = list.reduceRight(_ + _)
    println(res1)
    println(res2)

fold操作

    // fold操作
    val list = List(1,2,3,4,5)
    print(list.fold(10)(_*_))
    // 10*1 =10;10*2=20 .... 240*5 = 1200

函数式编程实例

package com.test.study

import java.io.File
import scala.io.Source

object WordCount {
   
  def main(args: Array[String]): Unit = {
   
    val dirfile = new File("./test")
    val files = dirfile.listFiles()
    for (file <- files) println(file)

    val listFiles = files.toList
    val wordMap = scala.collection.mutable.Map[String,Int]()
    listFiles.foreach( file => Source.fromFile(file).getLines().foreach(line => line.split(" ")
      .foreach(
        word => {
   
          if (wordMap.contains(word)) {
   
            wordMap(word) += 1
          } else {
   
            wordMap += (word -> 1)
          }
        }
      )
    ))


    for((key,value) <- wordMap) println(key+":"+value)
  }
}

相关推荐

  1. Scala 复习笔记

    2023-12-12 14:28:02       11 阅读
  2. 240520Scala笔记

    2023-12-12 14:28:02       11 阅读
  3. Scala学习笔记7: 对象

    2023-12-12 14:28:02       7 阅读
  4. Scala学习笔记8: 包

    2023-12-12 14:28:02       9 阅读
  5. Scala学习笔记9: 继承

    2023-12-12 14:28:02       9 阅读
  6. Scala学习笔记10: 特质

    2023-12-12 14:28:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 14:28:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 14:28:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 14:28:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 14:28:02       18 阅读

热门阅读

  1. Runtime

    Runtime

    2023-12-12 14:28:02      25 阅读
  2. linux 线程笔记

    2023-12-12 14:28:02       37 阅读
  3. python elasticsearch 日期聚合

    2023-12-12 14:28:02       26 阅读
  4. 利用flask将yolov5算法封装成在线推理服务

    2023-12-12 14:28:02       44 阅读
  5. Windows server flask

    2023-12-12 14:28:02       37 阅读
  6. 2024年软考高项还是机考吗?附常见问题答疑

    2023-12-12 14:28:02       33 阅读
  7. 816 - Abbott‘s Revenge (UVA)

    2023-12-12 14:28:02       42 阅读