feat:ChatGPT第 9 课:sortBy、sortWith、groupBy
This commit is contained in:
@@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user