继续测试下kotlin常用高阶函数用法,也就是有参数是函数的函数:
Kotlin
private fun testOthers() {
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
val doubledNumbers = numbers.map { it * 2 }
println("zxzx, numbers: $numbers")
println("zxzx, evenNumbers: $evenNumbers")
println("zxzx, doubledNumbers: $doubledNumbers")
val numbers2 = listOf("1", "2", "灭绝师太", "3", "周芷若")
val validNumbers = numbers2.mapNotNull { it.toIntOrNull() } // 字符串转换数字,过滤空值
println("zxzx, validNumbers: $validNumbers")
// 扁平化嵌套集合
val lists = listOf(listOf("i", "always"), listOf("love"), listOf("vicky", "du"), listOf("!"))
val result = lists.flatMap { it }
println("zxzx, $result")
data class User(val name: String, val hobbies: List<String>)
val users = listOf(
User("vicky du", listOf("网购", "凉皮面", "鸭血粉丝", "摄影", "八卦", "户外活动")),
User("daling zhou", listOf("户外活动", "编程", "花生", "打游戏", "刷美女"))
)
val allHobbies = users.flatMap { it.hobbies } // 从对象中提取嵌套集合
println("zxzx, $allHobbies")
data class MeiNv(val name: String, val age: Int) // 美人
val meiNvs = listOf<MeiNv>(MeiNv("西施", 18), MeiNv("貂蝉", 16)
, MeiNv("陈圆圆", 17), MeiNv("灭绝师太", 38), MeiNv("苏小妹", 15))
val result1 = meiNvs.takeWhile { it.age < 30 }.dropWhile { it.age < 16 } // 筛选条件
println("zxzx, 选美结果为:")
result1.forEach { println("zxzx, ${it.name}")}
// 使用 reduce 计算总和
val sum = listOf(1, 2, 3, 4, 5).reduce { acc, value -> acc + value }
println("zxzx, sum = $sum")
// reduce函数计算最大值
println("zxzx, max: ${listOf(1, 2, 3, 4, 5).reduce { acc, value -> if (acc > value) acc else value }}")
// 字符串拼接
println("zxzx, ${listOf("司马懿:", " ", "听诸葛亮弹琴,如观其肺腑也。").reduce { acc, word -> acc + word }}")
}
打印:

ok. 用起来很灵活,很方便。