当前位置: 首页 > article >正文

Scala第二天

1、 字符串拼接

scala形式 :   

val s = "java"

val a = 123

val x = 3.14

// 格式:     s - 方法   $ - 引用符,引用外面的变量

val sax = s"$s $a $x"  

// 想在中间再加上字符

val sdd = s"$s ${d}+1 $f"

println(sax)     // java 123 3.14

println(sdd)     // java 123+1 3.14

2、 scala  -- 面向对象编程  /  面向函数编程

    面向对象编程 :  将对象传来传去  , 调用一个方法传递的是一个对象,返回值的也是一个对象

   (1) 将对象作为参数

   (2) 将对象作为返回值

面向函数编程 :  将函数传来传去    --- 高阶函数

   (1) 以函数作为参数   (** 很重要 **)

       (2) 以函数作为返回值 (知道就行)

lambda表达式   --- 匿名表达式

   定义即调用

foreach :  循环数组,按照顺序将数组中的元素一个一个传给后面括号中的函数  

    array.foreach(println)

3、

(1) map() : 循环数组,将数组中的元素一个一个传递给后面的函数,函数的返回值会构建成一个新的数组

  -- 数据量不变    一对一

    

val ids: Array[String] = students.map(student => student.split(",")(0))

    (2) filter() :  将数组中的元素一个一个传递给后面的函数

  如果函数返回True保留数据

  如果函数返回False过滤数据

              -- 数据(可能)会变少

val filterStudent: Array[String] = students.filter(s => "文科一班".equals(s.split(",")(4)))

    (3) flatMap() :  将集合中的元素一个一个传递给后面的函数, 函数的返回值必须是一个集合, 然后将返回的集合展开成一个新的集合

先是 map   -- 返回一个数组

                再是 flat  -- 再展开

          -- 将数据一行变多行    一对多  

    

val words: List[String] = lines.flatMap(line => line.split(","))

4、集合  -- 可变(mutable) / 不可变(immutable)

(1) list  :  有序不唯一    -- 不可变

    (2) set   :  无序唯一      -- 不可变

    (3) Map   :  kv格式

    (4) Tuple :  元组, 固定长度的集合

 // 1、 List 集合  -- 不可变

 val list = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

 // 2、创建一个无序唯一的set集合   -- 不可变

 val set = Set(1, 2, 3, 3, 1, 1, 4)

 // 3、创建一个元组

 val t: (Int, Int, Int, Int, Int, Int) = (1, 2, 3, 4, 5, 10)

 // 4、创建一个不可变的map集合

 //    ("001", "张三") :  二元组  

 //    "001" -> "张三" :  构建二元组的简写

 val map = Map(("001", "张三"), ("002", "李四"), "003" -> "王五")

5、 WordCount 简写

// 链式调用

    Source

     .fromFile("data/words.txt")  // 读取文件

     .getLines()  // 获取所有行

     .toList  // 转换成List集合

     .flatMap(line => line.split(","))  // 一行变多行

     .groupBy(word => word)   // 以单词分组     (word, List(words)))

     .map(kv => (kv._1, kv._2.length))  // 统计单词数量    (word, countNum)

     .foreach(println)


http://www.kler.cn/news/321402.html

相关文章:

  • 【C++笔试强训】如何成为算法糕手Day5
  • 解决TikTok无法注册或注册不了的问题
  • 手机使用技巧:如何修复变砖的 Android 手机
  • 策略模式
  • [笔记]某S厂减速箱部件参数表 - 技术问题海外联系方式
  • JavaScript typeof运算符
  • 实变函数精解【25】
  • Excel锁定单元格,使其不可再编辑
  • QT开发:详解 Qt 多线程编程核心类 QThread:基本概念与使用方法
  • 大语言模型量化方法GPTQ、GGUF、AWQ详细原理
  • 【算法】二叉树中的 DFS
  • 技术点:go使用gomail包进行邮件发送
  • Actions Speak Louder than Words Meta史诗级的端到端推荐大模型落地
  • element ui 精确控制日期控件 date-picker
  • 怎么备考2024年11月软考高级系统架构师 ?
  • 基于SSM+小程序的医院管理系统(医院1)(源码+sql脚本+视频导入教程+文档)
  • grpcurl使用
  • gitlab集成CI/CD,shell方式部署
  • EMC术语简要介绍
  • SSM的学习(3)
  • 【论文_1992】 REINFORCE » P2 附录
  • 《程序猿之设计模式实战 · 模板方法》
  • JavaWeb美食推荐管理系统
  • 【Linux扩容根分区】LVM分区扩容过程踩坑记录
  • 计算机视觉硬件整理(四):相机与镜头参数介绍
  • EasyAR自定义相机RTSP视频流(CustomCamera)
  • uniapp自定义底部tabBar
  • Spring Boot入门到精通:网上购物商城系统
  • 实用的Git工作流程
  • docker pull镜像失败问题解决尝试