美文网首页Android开发Android开发经验谈Android技术知识
Kotlin学习笔记(十)函数操作符(总数操作符)

Kotlin学习笔记(十)函数操作符(总数操作符)

作者: 大虾啊啊啊 | 来源:发表于2020-10-22 14:52 被阅读0次

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.总数操作符

相关文章

网友评论

    本文标题:Kotlin学习笔记(十)函数操作符(总数操作符)

    本文链接:https://www.haomeiwen.com/subject/skgumktx.html