美文网首页
Kotlin-Lambda-集合

Kotlin-Lambda-集合

作者: 在下陈小村 | 来源:发表于2021-03-19 17:12 被阅读0次

1.kotlin中的list,listof创建的是不可变列表,mutableListOf创建的是可变的列表,set和map同理。

      val list= listOf("Apple","banana")
        val mutableList= mutableListOf<String>("Apple","banana")

        for (fruit in list){
            println(fruit)
        }

2.kotlin中的set

         val set= setOf<String>("Apple","banana")
        val mutableSet= mutableSetOf<String>("Apple","banana")

        for (fruit in set){
            println(fruit)
        }

3.kotlin中的Map

val map= mapOf("Apple" to 1,"banana" to 2)
        val mutableMap = mutableMapOf("Apple" to 1,"banana" to 2)

        for ((fruit,number) in map){
            println("fruit is" + fruit+ "num is"+ number)
        }

4.Lambda的形变原理
取出一个水果集合中名称字符串最长的那个,分别使用java的思路和使用Lambda的解题思路

fun maxLength(){
        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 maxLength2(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        var maxLengthFruit=list.maxBy { it.length }
        println(maxLengthFruit)
    }

5.Lambda的形变原理

//lambda表达式的转变的原理
    //{参数1:类型,参数2:类型-> 函数体}
    fun maxLengthLv1(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val lambda={fruit:String ->fruit.length}
        val maxLengthFruit=list.maxBy (lambda)
    }
    //lambda作为maxBy的参数
    fun maxLengthLv2(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val maxLengthFruit=list.maxBy ({fruit:String -> fruit.length})
    }
    //当Lambda参数是函数的最后一个参数时,可以将Lambda表达式移动到()外面
    fun maxLengthLv3(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val maxLengthFruit=list.maxBy (){ fruit:String -> fruit.length }
    }
    //当Lambda参数是函数的最后一个参数的话,可以将函数的()也省略
    fun maxLengthLv4(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val maxLengthFruit=list.maxBy { fruit:String -> fruit.length }
    }
    //Kotlin的类推导机制可以省略Lambda的参数类型
    fun maxLengthLv5(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val maxLengthFruit=list.maxBy { fruit-> fruit.length }
    }
    //当Lambda的参数只有一个是可以不用申明变量,直接使用it来代替
    fun maxLengthLv6(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val maxLengthFruit=list.maxBy { it.length }
    }

6.集合常用的几个函数式API
map
遍历list中的每一个元素,并将它转为大写。map返回的是一个集合,对原来集合处理后的集合

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

filter
根据Lambda的条件来删选,返回的也是一个集合。

fun lamFilter(){
        val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val newList=list.filter { it.length>5}
        for (fruit in newList){
            println(fruit)
        }
    }

any:集合中是否存在满足lambda表达式的元素,返回的是boolean值
all:集合中所有的元素是否返祖lambda表达式的条件,返回值是Boolean值

val list= listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
        val anyResult=list.any() { it.length>5}
        val allResult =list.all { it.length>5 }

7.java中常用的函数式AP在Kotlin中的调用

fun thread(){
        Thread(object :Runnable{
            override fun run() {
                TODO("Not yet implemented")
            }
        }).start()
    }

    fun threadLv1(){
        Thread(Runnable { println("fff") })
    }
    //参数列表仅有一个Java单抽象方法接口参数,可以省略接口名
    fun threadLv2(){
        Thread({ println("ffffff")})
    }
    
    fun threadLv3(){
        Thread{ println("fffff")}.start()
    }
button.setOnClickListener{
}

相关文章

  • Kotlin-Lambda-集合

    1.kotlin中的list,listof创建的是不可变列表,mutableListOf创建的是可变的列表,set...

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

网友评论

      本文标题:Kotlin-Lambda-集合

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