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