以下是搜索内容: 关闭

  • 首页
  • 日志
  • 友情链接
  • 关于我

KoiNL.

愿世间美好 温柔以待

“锦鲤握运,未离我韵”

“愿好运常在”

18 分类
0 标签
16 归档
  • 小站首页
  • 个人日志
  • 友情链接
  • 关于自己
  • 我的工具
站点信息

文章数目: 84 篇

最近动态: 2天前

上线时间: 531天

当前版本: v3.0.0

第1章 Scala语言基础.

分类: Spark
标签:

创建日期:2023-03-24 18:56:52

有关于Scala语言的一些基础(例如数据结构、类与对象等)已在下述代码中述明…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package scalatestkoinl
import scala.collection.mutable.ArrayBuffer // 1.1.2 变长数组(数组缓冲)需要

object info {
private var CONSTANT = "汪汪汪。。。" //伴生对象中的私有字段
case class Person(name:String,age:Int) // 样例类
def main(args:Array[String]){
// 一、Scala的数据结构
// 1. 数组
// 1.1. 定长数组与变长数组的定义与使用
// 1.1.1. 定长数组
val arr1 = new Array[Int](8) // 初始化一个长度为8的定长数组,其他元素均为0
println(arr1) // 直接打印定长数组,内容为数组的hashcode值
// 1.1.2. 变长数组(数组缓冲),需要导入包,见第二行
val ab = ArrayBuffer[Int]() // 初始化变长数组
ab += 1 // 表示尾部追加元素 +=
ab += (2,3,4,5) // 追加多个元素 +=()
ab ++= Array(6,7) // 追加一个数组 ++=Array()
ab ++= ArrayBuffer(8,9) // 追加一个数组缓冲 ++=ArrayBuffer()
ab.insert(0,0) // 在数组某个位置插入元素用insert,从某下标插入
ab.remove(0) // 删除数组某个位置的元素用remove按照下标删除
println(ab)

// 1.2. 数组的遍历及应用(计算元素总和和查找最大元素)
var myArr = Array(1.2,2.4,3.6,4.8)
for (x<-myArr){print(x+" ,")} // 打印输出所有的数组元素
println()
// 计算数组所有元素的总和
var total = 0.0
for (i<- 0 to (myArr.length - 1)){total += myArr(i)}
println("总和为:"+total)
// 查找数组中的最大元素
var max = myArr(0)
for (i<-1 to(myArr.length-1)){if(myArr(i)>max)max=myArr(i)}
println("最大值为:"+max)

// 1.3. 数组转换
val arr = Array(1,2,3,4,5,6,7,8,9) // 定义一个数组
val newArr = for(e<- arr if e%2==0) yield e*5 // 将偶数取出乘以5后生成一个新的数组
println(newArr.toBuffer)

// 2. 元组
val tuple=("itcast",3.14,65535)
print(tuple._1) // 获取第一个元素的值

// 3. 集合-列表
val fruit = "apples"::("oranges"::("pears"::Nil))
val num = Nil
println("head of fruit:"+fruit.head) // 获取列表第一个元素
println("tail of fruit:"+fruit.tail) // 除第一个元素以外的元素
println("check if fruit is empty:"+fruit.isEmpty) // 是否为空
println("check if num is empty:"+num.isEmpty)
println("take of fruit:"+fruit.take(2)) // 获取前2个元素
println("contains of fruit:"+fruit.contains("apples")) // 是否包含该元素

// 4. 集合-集合
val site = Set("Sougou","Google","Baidu")
val nums : Set[Int] = Set()
println("第一个网站:"+site.head)
println("其余网站:"+site.tail)
println("查看site集合是否为空:"+site.isEmpty)
println("查看num集合是否为空:"+num.isEmpty)
println("查看site的前2个网站:"+site.take(2))
println("查看集合是否包含网站Sougou:"+site.contains("Sougou"))

// 5. 集合-键值对
val colors = Map("red"->"1","azure"->"2","peru"->"3")
val perucolors = if(colors.contains("peru"))colors("peru") else 0
val azurecolors = colors.getOrElse("azure",0)
println("获取colors中键为read的值:"+colors("red"))
println("获取colors中所有的键:"+colors.keys)
println("获取colors中所有的值:"+colors.values)
println("获取colors中是否为空:"+colors.isEmpty)
println("获取colors中是否包含键peru,包含则返回对应值,否则返回0:"+perucolors)
println("获取colors中是否包含键azure,包含则返回对应值,否则返回0:"+azurecolors)

// 二、Scala面向对象的特性
// 1. 类与对象
val pt=new Point(10,20);
pt.move(10,10) //移到一个新的位置

// 2. 继承
val loc = new Location(10,20,15);
loc.move(10,10,5); //移到一个新的位置

// 3. 单例对象和伴生对象
// 3.1. 单例对象
SingletonObject.hello()

// 3.2. 伴生对象
val dog = new info
dog.name = "二哈666" // 伴生对象中的私有字段
dog.printName()

// 4. 特质
var people = new People
people.speak()
people.listen()
people.run()

// 三、Scala的模式匹配和样例类
// 1. 模式匹配
println(matchTest(3))
def matchTest(x:Int):String = x match {
case 1=>"one"
case 2=>"two"
case 3=>"many"
}

// 2. 样例类
val alice = new Person("Alice", 25)
val bob = new Person("Bob",32)
val charlie = new Person("Charlie", 32)
for (person<-List(alice,bob,charlie)){
person match {
case Person("Alice",25) =>println("Hi Alice!")
case Person("Bob",32)=>println("Hi Bob!")
case Person(name,age)=>
println("Name:"+name+"\t"+"Age:"+age)
}
}
}
}

// 类与对象相关类
class Point(val xc:Int,val yc:Int){
var x:Int = xc
var y:Int = yc
def move(dx:Int,dy:Int): Unit ={
x = x+dy
y = y+dy
println("x的坐标点:"+x);
println("y的坐标点:"+y);
}
}
// 类与对象与继承相关类
class Location(override val xc:Int, override val yc:Int,val zc:Int)extends Point(xc,yc){
var z:Int = zc
def move(dx:Int,dy:Int,dz:Int): Unit ={
x = x+dx
y = y+dy
z = z+dz
println("x的坐标点:"+x)
println("y的坐标点:"+y)
println("z的坐标点:"+z)
}
}
// 单例对象相关类
object SingletonObject{
def hello(): Unit ={println("Hello,This is Sinleton Object")}
}
// 伴生对象相关类
class info{
val id=666
private var name = "二哈"
def printName():Unit=(println(info.CONSTANT+name))
}

//特质相关类
trait Animal{
//定义一个抽象方法方法(没有实现的方法)
def speak()
def listen():Unit={}
def run():Unit={println("I am running")}
}
//定义类,继承特质
class People extends Animal{
override def speak(): Unit = {println("I am speaking English")}
}
浏览量

评论区

欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~

目录

上一篇: 第4章 Spark SQL结构化数据文件处理

下一篇 第3章 Spark RDD弹性分布式数据集

公告栏

《 

 》

Hello~近期剽窃本站内容频发,本站唯一指定网站:https://koinl.github.io。请认准。点击点击此处选择进入。
回到顶部
查看评论

Power By Hexo.

Theme:koinl.

信息来源于锦鲤未离