kotlin笔记_lambda编程

集合的创建和遍历

list:

package com.example.helloworld.learnKotlin_lambda.collection_create_for

fun main()
{

    // 1
//    val list = ArrayList<String>()
//    list.add("Apple")
//    list.add("Banana")
//    list.add("Orange")
//    list.add("Pear")
//    list.add("Grape")

    // 2
    // 不可变集合
    val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
    for (fruit in list1) {
        println(fruit)
    }

    // 3
    // 可变集合
    val list2 = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape")
    list2.add("Watermelon")
    for (fruit in list2) {
        println(fruit)
    }
}

map:

package com.example.helloworld.learnKotlin_lambda.collection_create_for

fun main()
{

    // 1
//    val map = HashMap<String, Int>()
//    map.put("Apple", 1)
//    map.put("Banana", 2)
//    map.put("Orange", 3)
//    map.put("Pear", 4)
//    map.put("Grape", 5)

    // 2
    val map1 = HashMap<String, Int>()
    map1["Apple"] = 1
    map1["Banana"] = 2
    map1["Orange"] = 3
    map1["Pear"] = 4
    map1["Grape"] = 5


    // 3
    // to不是关键字, 是infix函数
    val map2 = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5)
    for ((fruit, number) in map2) {
        println("fruit is " + fruit + ", number is " + number)
    }


}

set:

package com.example.helloworld.learnKotlin_lambda.collection_create_for

fun main()
{
    // 不可变集合
    val set1 = setOf("Apple", "Banana", "Orange", "Pear", "Grape")
    for (fruit in set1) {
        println(fruit)
    }

    // 可变集合
    val set2 = mutableSetOf("Apple", "Banana", "Orange", "Pear", "Grape")
    set2.add("Watermelon")
    for (fruit in set2) {
        println(fruit)
    }
}

集合的函数式API

maxBy:

package com.example.helloworld.learnKotlin_lambda.collection_API

// 找到单词最长的那个水果
fun main()
{
    val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    var maxLengthFruit1 = ""
    for (fruit in list1) {
        if (fruit.length > maxLengthFruit1.length) {
            maxLengthFruit1 = fruit
        }
    }
    println("max length fruit is " + maxLengthFruit1)

    val list2 = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    val maxLengthFruit2 = list2.maxBy { it.length }
    println("max length fruit is " + maxLengthFruit2)

    val list3 = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
//    val lambda = { fruit: String -> fruit.length }
//    val maxLengthFruit3 = list3.maxBy(lambda)
//    val maxLengthFruit3 = list3.maxBy({ fruit : String -> fruit.length })
    // Lambda参数使函数的最后一个参数时, 可以将lambda表达式移到函数括号外面
//    val maxLengthFruit3 = list3.maxBy() { fruit : String -> fruit.length }
    // Lambda参数是函数的唯一一个参数的话, 还可以将函数的括号省略
//    val maxLengthFruit = list3.maxBy { fruit : String -> fruit.length }
    // Kotlin类型推导, 省去类型声明
//    val maxLengthFruit = list3.maxBy { fruit -> fruit.length }
    // Lambda参数列表只有一个参数时, 不必声明参数名, 可以使用it关键字
    val maxLengthFruit = list3.maxBy { it.length }

}

map:

package com.example.helloworld.learnKotlin_lambda.collection_API

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

filter:

package com.example.helloworld.learnKotlin_lambda.collection_API

fun main()
{
    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_all:

package com.example.helloworld.learnKotlin_lambda.collection_API

fun main() {
    val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    // any函数判断集合中是否至少有一个元素满足条件
    val anyResult = list.any { it.length <= 5 }
    // all函数判断集合是否所有元素都满足条件
    val allResult = list.all { it.length <= 5 }
    println("anyResult is " + anyResult + ", allResult is " + allResult)
}

参考

郭霖. 《第一行代码 Android 第3版》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_cen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值