Kotlin中函数式编程API(4)✔️聚合函数
2019-06-13 本文已影响0人
狼性代码人
常见的聚合函数除了 reduce 外还有11个,如下:
函数 | 适用类型 | 返回数据 | 说明 |
---|---|---|---|
any | Collection集合、Map集合或数组 | 布尔值 | 如果至少有一个元素与指定条件相符,则返回true |
all | Collection集合、Map集合或数组 | 布尔值 | 如果所有元素与指定条件相符,则返回true |
count | Collection集合、Map集合或数组 | Int类型 | 返回与指定条件相符的元素个数 |
max() | Collection集合或数组 | 元素自身类型 | 返回最大元素。如果没有元素,则返回空值 |
maxBy | Collection集合、Map集合或数组 | 元素自身类型 | 返回使指定函数产生最大值的第一个元素。如果没有元素,则返回空值 |
min() | Collection集合或数组 | 元素自身类型 | 返回最小元素。如果没有元素,则返回空值 |
minBy | Collection集合、Map集合或数组 | 元素自身类型 | 返回使指定函数产生最小值的第一个元素。如果没有元素,则返回空值 |
sum() | Collection集合或数组 | 元素自身类型 | 返回所有元素之和 |
sumBy | Collection集合或数组 | 元素自身类型 | 返回使指定函数计算集合元素总和 |
average() | Collection集合或数组 | Double类型 | 返回所有元素的平均值 |
none | Collection集合、Map集合或数组 | 布尔值 | 如果没有元素与指定条件相符,则返回true |
- 案例
fun main(args: Array<String>?) {
val list = listOf(1, 3, 34, 54, 75)
val map = mapOf(102 to "小三", 105 to "小鱼", 109 to "小五")
println(list.any { it > 70 })
println(list.all { it > 10 })
println(list.count { it > 50 })
println(list.max())
println(map.maxBy { it.key })
println(list.min())
println(map.minBy { it.key })
println(list.sum())
println(list.sumBy { if (it < 10) it else 0 })
println(list.average())
println(map.none { it.key > 110 })
}
// 输出结果
2019-06-13 17:09:20.619 I: true
2019-06-13 17:09:20.619 I: false
2019-06-13 17:09:20.619 I: 2
2019-06-13 17:09:20.631 I: 75
2019-06-13 17:09:20.632 I: 109=小五
2019-06-13 17:09:20.632 I: 1
2019-06-13 17:09:20.632 I: 102=小三
2019-06-13 17:09:20.633 I: 167
2019-06-13 17:09:20.633 I: 4
2019-06-13 17:09:20.633 I: 33.4
2019-06-13 17:09:20.633 I: true