1.总数操作符
1.any
只要有一个元素满足就返回true否则返回false
val list = listOf(1, 2, 3, 4, 5)
fun main() {
//只要有一个元素满足就返回true否则返回false
val result = list.any {
it > 3
}
println(result)
}
true
2.all
每一个元素都满足就返回true否则返回false
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
//每一个元素都满足就返回true否则返回false
val result = list.all {
it > 3
}
println(result)
}
false
3.count
返回满足条件的个数
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
//返回满足条件的个数
val result = list.count {
it > 3
}
println(result)
}
2
4.fold
初始化一个值,在这个值的基础上从第一项到最后一项通过一个函数累计所有的元素
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
//返回满足条件的个数
val result = list.fold(3,{value1,value2->
println("$value1,$value2")
value1+value2
})
println(result)
}
3,1
4,2
6,3
9,4
13,5
18
初始化值为3,从list的第一个元素1到最后一个元素5,每次都进行相加,最后得到结果18
5.foldRight
我们知道fold和foldRight中传入的lambda表达式有两个参数,我们上面的例子传了value1和value2。在fold函数中,第一个参数value1表示当前结果值,第二个参数value2表示遍历到的当前元素的值。foldRight函数中这个两个参数刚好相反。我们看例子
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
//返回满足条件的个数
val result = list.foldRight(3,{value1,value2->
println("$value1,$value2")
value1+value2
})
println(result)
}
5,3
4,8
3,12
2,15
1,17
18
并且fold函数是从正序遍历,foldRight是倒序遍历。
6.forEach
遍历
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
list.forEach { println(it) }
}
1
2
3
4
5
7.forEachIndexed
遍历索引和值
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
list.forEachIndexed { index, i ->
println("$index--$i")
}
}
0--1
1--2
2--3
3--4
4--5
8.max
获取最大一项,没有则返回null
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val max = list.max()
println(max)
}
5
9.maxBy
maxBy函数传入一个lambda表达式,lambda表达式的入参是具体的某一项元素,当调函该lambda表达式之后的结果是最大值,则返回当前元素
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val result = list.maxBy {
val a = -1
it*a
}
println(result)
}
传入的lambda表达式为( val a = -1 ita),此时结果最大值为第一个元素算出的结果1-1 = -1。所有该函数的最终结果是1。即返回了第一个元素
10.min,minBy和上面的刚好相反
11.none
没有任何元素匹配则返回true
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val result = list.none{
it>5
}
println(result)
}
true
12.reduce
reduce和fold一样,只是reduce没有初始值
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val result = list.reduce { acc, i ->
println("$acc,$i")
acc+i
}
println(result)
}
1,2
3,3
6,4
10,5
15
13.reduceRight
reduceRight和foldRight一样,只是reduceRight没有初始值
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val result = list.reduceRight { acc, i ->
println("$acc,$i")
acc+i
}
println(result)
}
4,5
3,9
2,12
1,14
15
14.sumBy
返回每一项通过函数处理之后的总和
package com.example.kotlin01
val list = listOf(1, 2, 3, 4, 5)
fun main() {
val result = list.sumBy {
it+2
}
println(result)
}
25
```
每一项都+2。然后求出他们的总和3+4+5+6+7 = 25
###2.总数操作符
网友评论