Compare commits

...
3 Commits
22 changed files with 405 additions and 26 deletions
@@ -1,5 +1,6 @@
package practise1.comprehensive
object Comprehensive {
def main(args: Array[String]): Unit = {
/*第 1 课综合题
@@ -19,16 +20,16 @@ object Comprehensive {
val score = 85
val evaluate =
if (score >= 90 ) "优秀"
else if (score >= 80) "良好"
else if (score >= 60) "及格"
else "不及格"
if (score >= 90) "优秀"
else if (score >= 80) "良好"
else if (score >= 60) "及格"
else "不及格"
println(
s"""
|${name},今年${age}岁
|成绩:${score}
|评价:${evaluate}""".stripMargin)
|${name},今年${age}岁
|成绩:${score}
|评价:${evaluate}""".stripMargin)
}
}
@@ -1,5 +1,6 @@
package practise1.demo
object Demo1VarAndVal {
def main(args: Array[String]): Unit = {
@@ -8,14 +9,13 @@ object Demo1VarAndVal {
// name = "Tom" // ❌ 不允许修改
var age = 25
age = 26 // ✅ 可以修改
age = 26 // ✅ 可以修改
println(name)
println(age)
println("=================================")
println("=================================")
}
@@ -1,15 +1,16 @@
package practise1.demo
object Demo2Type {
def main(args: Array[String]): Unit = {
//2. 类型
//
//Scala 支持自动推断类型:
val name = "xiaoMing" // String
val age = 25 // Int
val price = 19.99 // Double
val flag = true // Boolean
val name = "xiaoMing" // String
val age = 25 // Int
val price = 19.99 // Double
val flag = true // Boolean
// 也可以明确指定:
val name2: String = "xiaoMing"
+4 -5
View File
@@ -1,23 +1,22 @@
package practise1.demo
object Demo4If {
def main(args: Array[String]): Unit = {
// Scala 的 if 和 Java 类似
val age = 20
if(age >=18){
if (age >= 18) {
println("成年人")
}else{
} else {
println("未成年")
}
// 但是 Scala 有一个非常重要的特点:if 本身就是一个表达式,可以返回值
val result = if(age >= 18){
val result = if (age >= 18) {
"成年人"
}else{
} else {
"未成年人"
}
@@ -2,20 +2,21 @@ package practise1.exercises
object Exercises1 {
def main(args: Array[String]): Unit = {
/* 练习 1:基本变量
/* 练习 1:基本变量
创建三个变量:
name = "Tom"
age = 20
salary = 15000.5
创建三个变量:
name = "Tom"
age = 20
salary = 15000.5
要求:
输出:Tom今年20岁,工资是15000.5*/
要求:
输出:Tom今年20岁,工资是15000.5*/
val name = "Tom"
val age = 20
val salary = 15000.5
println(s"${name}今年${age}岁,工资是${salary}")
}
}
@@ -1,5 +1,4 @@
package practise1.exercises
import scala.util.Random
object Exercises4 {
@@ -0,0 +1,17 @@
package practise9.demo
/*
* 第 9 课:sortBy、sortWith、groupBy*/
//sortBy 基础用法
object Demo1SortBy {
def main(args: Array[String]): Unit = {
val nums = List(5, 2, 8, 1, 3)
val result = nums.sortBy(x => x)
val result2 = nums.sortBy(+_)
println(result)
println(result2)
}
}
@@ -0,0 +1,15 @@
package practise9.demo
/*
* 按元组属性排序*/
object Demo2SortByProperty {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70)
)
val result = students.sortBy(x => x._2)
println(result)
}
}
@@ -0,0 +1,15 @@
package practise9.demo
/*
* sortBy 配合 _ */
object Demo3SortByUnderscore {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70)
)
val result = students.sortBy(_._2)
println(result)
}
}
@@ -0,0 +1,18 @@
package practise9.demo
/*
* sortBy 降序*/
object Demo4SortByDescending {
def main(args: Array[String]): Unit = {
val nums = List(5, 2, 8, 1, 3)
// 默认升序
println(nums.sortBy(x => x))
val result = nums.sortBy(x => x).reverse
println(result)
// -_ 就是 x => -x
println(nums.sortBy(-_))
}
}
@@ -0,0 +1,19 @@
package practise9.demo
/*
* sortWith 自定义比较*/
object Demo5SortWith {
def main(args: Array[String]): Unit = {
val nums = List(5, 2, 8, 1, 3)
val result = nums.sortWith((a, b) => a > b)
/*
* a 和 b 比较
* ↓
* 如果 a > b
* ↓
* a 放前面*/
println(result)
}
}
@@ -0,0 +1,30 @@
package practise9.demo
/*
* sortBy 与 sortWith 区别*/
object Demo6SortByAndSortWith {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70)
)
// 按照成绩排序
// 元素
// ↓
// 提取一个排序依据
// ↓
// 按照这个依据排序
println(students.sortBy(_._2).reverse)
// 比较两个学生的成绩
// ↓
// 决定谁排前面
println(students.sortWith((a, b) => a._2 > b._2))
//sortBy → 按什么排序
//sortWith → 怎么比较
}
}
@@ -0,0 +1,13 @@
package practise9.demo
/*
* groupBy 基础用法*/
object Demo7GroupBy {
def main(args: Array[String]): Unit = {
val nums = List(1, 2, 3, 4, 5, 6)
val result = nums.groupBy(x => x % 2)
println(result)
}
}
@@ -0,0 +1,28 @@
package practise9.demo
/*
* 按学生成绩分组*/
object Demo8GroupByStudentScore {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 85),
("Jack", 92),
("Alice", 76),
("Bob", 88),
("Lucy", 95)
)
val result = students.groupBy(student => {
val score = student._2
if (score >= 90) {
"优秀"
} else if (score >= 80) {
"良好"
} else {
"及格"
}
})
println(result)
}
}
@@ -0,0 +1,17 @@
package practise9.demo
/*
* filter + map + sortBy 串联*/
object Demo9CollectionChain {
def main(args: Array[String]): Unit = {
val nums = List(1, 2, 3, 4, 5, 6)
val result = nums
.filter(_ % 2 == 0)
.map(_ * 10)
.sortBy(+_)
// .sortBy(x => x)
println(result)
}
}
@@ -0,0 +1,16 @@
package practise9.exercises
/*
* 练习 1:升序
给:
val nums = List(5, 2, 8, 1, 3)
使用 sortBy,得到:
List(1, 2, 3, 5, 8)*/
object Exercises1 {
def main(args: Array[String]): Unit = {
val nums = List(5, 2, 8, 1, 3)
val result = nums.sortBy(+_)
println(result)
}
}
@@ -0,0 +1,18 @@
package practise9.exercises
/*
* 练习 2:降序
还是:
val nums = List(5, 2, 8, 1, 3)
使用 sortBy,得到:
List(8, 5, 3, 2, 1)*/
object Exercises2 {
def main(args: Array[String]): Unit = {
val nums = List(5, 2, 8, 1, 3)
val result = nums.sortBy(-_)
println(result)
}
}
@@ -0,0 +1,32 @@
package practise9.exercises
/*
* 练习 3:学生成绩排序
给:
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70),
("Bob", 85)
)
使用 sortBy 按成绩从低到高排序:
(Alice,70)
(Tom,80)
(Bob,85)
(Jack,95)
提示:
_._2*/
object Exercises3 {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70),
("Bob", 85)
)
val result = students.sortBy(_._2)
println(result)
}
}
@@ -0,0 +1,27 @@
package practise9.exercises
/*
* 练习 4:sortWith
还是上面的学生。
使用 sortWith:
按照成绩从高到低
结果:
List(
(Jack,95),
(Bob,85),
(Tom,80),
(Alice,70)
)*/
object Exercises4 {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 80),
("Jack", 95),
("Alice", 70),
("Bob", 85)
)
val result = students.sortWith((a, b) => a._2 > b._2)
println(result)
}
}
@@ -0,0 +1,24 @@
package practise9.exercises
/*
* 练习 5:groupBy
给:
val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
按照奇偶分组:
偶数 → List(2,4,6,8)
奇数 → List(1,3,5,7)
提示:
groupBy(_ % 2)
得到的 Map 的 Key 会是:
0 → 偶数
1 → 奇数*/
object Exercises5 {
def main(args: Array[String]): Unit = {
val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
val result = nums.groupBy(_ % 2)
println(result)
}
}
@@ -0,0 +1,49 @@
package practise9.exercises
/*
* 练习 6 ⭐:成绩分组
给:
val students = List(
("Tom", 85),
("Jack", 92),
("Alice", 76),
("Bob", 88),
("Lucy", 95),
("Mike", 60)
)
按照成绩分成:
优秀:>= 90
良好:>= 80
及格:>= 60
最终类似:
优秀 → Jack, Lucy
良好 → Tom, Bob
及格 → Alice, Mike
要求使用:
groupBy*/
object Exercises6 {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 85),
("Jack", 92),
("Alice", 76),
("Bob", 88),
("Lucy", 95),
("Mike", 60)
)
val result = students.groupBy(student => {
if (student._2 >= 90) {
"优秀"
}else if (student._2 >=80){
"良好"
}else if (student._2 >=60){
"及格"
}else "不及格"
})
println(result)
}
}
@@ -0,0 +1,40 @@
package practise9.exercises
/*
* 练习 7 ⭐⭐ 综合题
给:
val students = List(
("Tom", 85),
("Jack", 92),
("Alice", 76),
("Bob", 88),
("Lucy", 95),
("Mike", 60)
)
完成:
1. filter:去掉不及格成绩(< 60)
2. sortBy:按照成绩从高到低
3. map:只保留学生姓名
最终:
List(Lucy, Jack, Bob, Tom, Alice, Mike)*/
object Exercises7 {
def main(args: Array[String]): Unit = {
val students = List(
("Tom", 85),
("Jack", 92),
("Alice", 76),
("Bob", 88),
("Lucy", 95),
("Mike", 60)
)
val result = students
.filter(_._2 >= 60)
.sortBy(-_._2)
.map(_._1)
println(result)
}
}