0
点赞
收藏
分享

微信扫一扫

【Kotlin】Kotlin笔记7-Lambda编程2(List,Map的函数式API)


Kotlin笔记7-Lambda编程2-List,Map的函数式API


4.2 Lambda编程2

  • Lambda表达式

​Example:​

//list
//最长水果单词
fun findLongestFruit() {
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
var maxLengthFruit = ""
for (fruit in list) {
if (fruit.length > maxLengthFruit.length)
maxLengthFruit = fruit
}
println("max length fruit is $maxLengthFruit")
}

集合的函数式API

fun findLongestFruit1() {
//优化
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val maxLengthFruit = list.maxByOrNull { it.length }
println("max length fruit is $maxLengthFruit")
}

Lambda表达式的语法结构

{ 参数名1: 参数类型, 参数名2: 参数类型 -> 函数体 }

序号

Tips

1

最后一行会作为Lambda的返回值

​推演过程:​

val lambda = { fruit: String -> fruit.length }
val maxLengthFruit = list.maxByOrNull(lambda)

​直接传入:​

val maxLengthFruit = list.maxByOrNull({ fruit: String -> fruit.length })

​移到括号外:​

val maxLengthFruit1 = list.maxByOrNull() { fruit: String -> fruit.length }

​lambda是函数唯一参数,省略括号:​

val maxLengthFruit2 = list.maxByOrNull { fruit: String -> fruit.length }

​类型推导:​

val maxLengthFruit3 = list.maxByOrNull { fruit -> fruit.length }

​唯一参数,it代替:​

it: 唯一参数,it代替

val maxLengthFruit4 = list.maxByOrNull { it.length }
  • Map函数API

序号

Tips

1

将集合的每个元素映射成一个另外的值

​Example:​

fun getUpperFruits() {
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val newlist = list.map { it.toUpperCase() }
for (fruit in newlist) {
println(fruit)
}
}

filter:

​Example:​

fun filterFruits() {
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val newlist = list.filter { it.length < 5 }
.map { it.toUpperCase() }
for (fruit in newlist) {
println(fruit)
}
}

any: 是否存在一个元素满足指定条件

val anyResult = list.any { it.length <= 5 }

all: 是否所有元素都满足指定条件

val allResult = list.all { it.length <= 5 }

​Example:​

//any&all
fun anyAndAll() {
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val anyResult = list.any { it.length <= 5 }
val allResult = list.all { it.length <= 5 }
println("anyResult is $anyResult, allResult is $allResult")
}

【Kotlin】Kotlin笔记7-Lambda编程2(List,Map的函数式API)_filter


举报

相关推荐

0 条评论