集合的简单计算(求和、乘积、最大值、最小值、排序)
* 1. 求和
* 2. 求乘积
* 3. 最大值
* 4. 最小值
* 5. 排序
* 说明
* 1.sorted 按数据元素值(默认),正序排序(默认)
* 2.sortBy 按指定数据元素值比较(自定义),正序排序(默认)
* 3.sortWith 按指定规则比较
* */
/*
* 集合的简单计算(求和、乘积、最大值、最小值、排序)
* 1. 求和
* 2. 求乘积
* 3. 最大值
* 4. 最小值
* 5. 排序
* 说明
* 1.sorted 按数据元素值(默认),正序排序(默认)
* 2.sortBy 按指定数据元素值比较(自定义),正序排序(默认)
* 3.sortWith 按指定规则比较
* */
object SimpleCaculation extends App {
//1. 初始化
var list = List(1, 2, -3, 4, -5, 6, 7)
//2. 求和 - sum
println(list.sum)
//3. 求乘积 - product
println(list.product)
//4. 求最大值
println(list.max)
//5. 求最小值
println(list.min)
//6. 排序
//默认排序规则为 正序
var list1 = list.sortBy(x => x) //指定比较的数据
println(list1)
var list2 = list.sortBy(x => x.abs) //按绝对值比较大小
println(list2)
//指定排序规则
println(list)
var index = 1
//设置比较规则
def rule(x: Int, y: Int) = {
printf("第 %d 交换\n", index)
index += 1
x > y //倒序
}
var list3 = list.sortWith(rule) //函数为true时,交换顺序
println(list3)
//匿名函数
var list4 = list.sortWith(_ < _)
println(list4)
var list5 = list.sorted
println(list5)
-- sorted 和 sortBy
// 排序 - sorted
// 说明 : 根据 指定的排序器(Ordering),对数组进行排序,并返回一个新数组
// 默认为 正序排序
println(s"排序前: ${arr.mkString(",")}")
println(s"sorted 排序后: ${arr.sorted.mkString(",")}")
// 排序 - sortBy
// 说明 :
// 1. 根据 指定的排序器(Ordering),对转换后的数组进行排序,并返回一个新数组
// 默认为 正序排序
// 逆序排序 : sortBy(_)(Ordering.Int.reverse)
// 2. 和sorted的区别 :
// sortBy可以对数组的元素进行转换
//
println(s"sortBy 排序后(绝对值): ${arr.sortBy(x => x.abs).mkString(",")}")
}