scala
艾斯比的日常
简单,快乐,分享
展开
-
scala 如何使用正则提取内容
背景最近有个需求, spark 作业执行前, 需要判断某个 hdfs 的地址是否在 hive 上存在分区的元信息.例如下面的 hdfs 地址/user/s_user_profile/god/user_crowd/date=20220214/job_id=100055想要获取里面的 date 的值和 job_id 的值如果还不清楚正则表达式语法的, 可以先了解下https://blog.csdn.net/u012745499/article/details/108763880代码.r 表示原创 2022-02-24 19:47:25 · 1602 阅读 · 0 评论 -
scala 数组的 head tail init last 都是什么作用
背景今天在看我们公司的 spark 项目. 其中有看到调用数组的 head 方法. 于是搜索相关信息作用下图可以很形象地表达含义head 表示数组的第一个元素 tail 表示数组除去 head 后的数组 last 表示数组的最后一个元素 init 表示数组除去 last 后的数组 @Test def testHead() = { val array = Array(1, 2, 3, 4, 5) println(array.head) println(ar原创 2022-01-27 20:00:17 · 3788 阅读 · 0 评论 -
scala foldLeft foldRight 区别
foldLeft foldRight 相比之前的 reduceLeft, reduceRight 多增加初始值, foldLeft 在集合左边增加元素, foldRight 在集合右边增加元素foldLeft 从左往右遍历, foldRight 从右往左遍历, 不过注意参数顺序仍然是集合元素的正序顺序 /* */ @Test def testFoldLeft() = { val list = List(4, 5, 6) /* fold 指定初始值 与 r.原创 2021-12-27 22:49:54 · 222 阅读 · 0 评论 -
scala 的 reduceLeft reduceRight
reduceLeft reduceRight 都用于对集合元素的归约这里举例说明 /* a b c a+b 会作为第一个参数值传入 */ @Test def testReduceLeft() = { val list = List(4, 5, 6) // (4 - 5) - 6 println(list.reduceLeft(_ - _)) // 4 - (5 - 6) println(list.reduceRight(_ - _))原创 2021-12-26 14:09:12 · 338 阅读 · 0 评论 -
scala 的 filter 和 takeWhile 区别
filter 和 takeWhile 都用于过滤元素, 返回 true 表示收集该元素, false 表示不收集该元素filter 会处理全部元素, 而 takeWhile 在第一次返回 false 后, 就结束循环, 之后的元素全部丢弃@Test def testTakeWhile() = { val list = List(1, 2, 3, 4, 2, 1) println(list.takeWhile(_ < 3)) }...原创 2021-12-25 17:08:16 · 305 阅读 · 0 评论 -
scala 的 :: 符号
a :: list 表示 a 元素添加到 list 的开头1 :: Nil原创 2021-12-25 01:30:20 · 330 阅读 · 0 评论 -
scala object 和 class 区别
object 声明的是单例对象, 里面的函数和字段都是静态的, 例如我们定义 main 函数都是在 object 里定义; class 声明的类, 里面的函数和字段都是非静态的, 需要实例化后才能访问object 的构造方法必须是无参的object 和 class 如果定义相同名称的, 那么 object 的对象称为伴生对象, 可以访问 class 的成员属性...原创 2021-12-22 23:00:30 · 193 阅读 · 0 评论 -
scala 变量的延迟加载
scala 支持变量延迟加载, 即在第一次真正使用时, 才会初始化变量的值使用 lazy val 关键字修饰变量lazy val abc = initAbc();下面举例, 如果不使用 lazy 修饰变量, 那么期望先打印 test 再打印 init c而使用 lazy 修饰变量, 那么会先打印 test 再打印 init c @Test def testVar() = { // lazy val 惰性求值 lazy val c = initC() println("原创 2021-12-18 00:53:45 · 305 阅读 · 0 评论 -
scala 安装
scala 依赖 jdk 环境, 请提前安装好 jdk访问 scala 官网下载页面 https://www.scala-lang.org/download/点击 download scala2滚动到页面底部, Other resources 点击 scala-2.13.7.zip 下解压 zip 包, 这里放在 D:\dev\scala2 目录配置环境变量 SCALA_HOME 为 D:\dev\scala2并将 %SCALA_HOME%\bin 加入 PATH新开 cmd 窗口,原创 2021-12-15 00:59:34 · 1293 阅读 · 0 评论