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)

相关推荐
独断万古他化几秒前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
m0_694845572 分钟前
tinylisp 是什么?超轻量 Lisp 解释器编译与运行教程
服务器·开发语言·云计算·github·lisp
春日见7 分钟前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
我爱加班、、10 分钟前
Websocket能携带token过去后端吗
前端·后端·websocket
C++ 老炮儿的技术栈11 分钟前
VS2015 + Qt 实现图形化Hello World(详细步骤)
c语言·开发语言·c++·windows·qt
派葛穆17 分钟前
Python-批量安装依赖
开发语言·python
MSTcheng.29 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓131332 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世32 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
一 乐33 分钟前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端