当前位置: 首页 > article >正文

Kotlin语法-Day10

文章目录

    • 1.1 变换函数-map
    • 1.2 变换函数-flatmap
    • 1.3 变换函数-filter
    • 1.4 合并函数-zip
    • 1.5 kotlin与java交互(注解)

1.1 变换函数-map

package com.example.kotlin_study.s3
//TODO Kotlin语言中的变换函数map
/*
*
* */
fun main() {
    val list= listOf("张三2","李四11","王五111")
    //原理:就是把你 匿名函数 最后一行的返回值 加入到一个新的集合,新集合的泛型是R,并且返回新集合
    val list2 = list.map {
        "【$it】"
    }
    println(list2)
    
    val list3 =list.map {
        "名字是:$it"
    }.map {
        "$it, 文字长度是:${it.length}"
    }.map {
        "【$it】"
    }
    for (s in list3){
        println("$s  ")
    }
}

在这里插入图片描述


1.2 变换函数-flatmap

//TODO Kotlin语言中的变换函数-flatmap
/*
*
*  map { it == 每一个元素 T 例如 String Int Boolean Char...    是把每一个元素加入到新集合}
*  flatmap { it == 每一个元素 T 集合1 集合2 集合3 ...  是把每一个元素(集合)加入到新集合}
* */
fun main() {
    //原理:就是把你 匿名函数 最后一行的返回值(又是一个集合listOf(...)) 加入到一个新的集合,新集合的泛型是R,并且返回新集合
    val list = listOf("李四","张三","王虎")
    val map = list.flatMap {
        listOf("$it 在学习c++", "$it 在学习java", "$it 在学习kotlin")
    }
    println(map)
}

在这里插入图片描述


1.3 变换函数-filter

//TODO Kotlin语言中的过滤函数-filter
/*
*
* */
fun main() {
        val nameLists= listOf(
            listOf("黄晓明","李连杰","李小龙"),
            listOf("刘军","李元霸","刘明"),
            listOf("刘局","黄家驹","黄飞鸿")
        )
    nameLists.map {
        // it   ==  nameLists的元素 == listOf("黄晓明","李连杰","李小龙")
        println(it)
    }
    println()
    val map = nameLists.flatMap {
        println(it)
        listOf("")
    }
    println()
    nameLists.flatMap { it ->
        it.filter {
        println("$it filter")
            true
            //filter  {true,false} true他会加入到新的集合,进行组装新集合 返回,   否则false过滤掉,不加入,返回空集合
          }
    }.map {
        print("$it  ")
    }
    println()
    println()

    nameLists.flatMap { it ->
        it.filter {
            it.contains('黄')
            //filter  {true,false} true他会加入到新的集合,进行组装新集合 返回,   否则false过滤掉,不加入,返回空集合
        }
    }.map {
        print("$it  ")
    }

}

在这里插入图片描述


1.4 合并函数-zip

//TODO Kotlin语言中的合并函数-zip
/*
*
* */
fun main() {
    val names= listOf("张三","李四","王五","马六")
    val ages= listOf(20,21,22,23)

    //原理:把第一个集合和第二个集合,合并起来,创建新的集合,并返回
    //      创建新的集合(元素,元素,元素)  元素Pair(K,V) K代表第一个集合的元素  V代表第二个集合的元素
    val zip :List<Pair<String,Int>> = names.zip(ages)
    println(zip)
    println()

    //遍历
    zip.forEach {
        //it  == Pair<String,Int>
        println("姓名是:${it.first},年龄是:${it.second}")
    }

}

在这里插入图片描述


1.5 kotlin与java交互(注解)

  • @file:JvmName
    修改kotlin类名,必须在包名之前
    在这里插入图片描述

  • @JvmField
    将kotlin类中的属性公开,默认是private
    在这里插入图片描述

  • @JvmOverloads
    原理:编译器环节 专门重载一个函数 专门给java用
    在这里插入图片描述

  • @JvmStatic
    companion实际上是会生成一个类,JAVA调用时需要先拿到这个类再去调用内部属性或方法
    在companion object属性添加@JvmField,方法上添加@JvmStatic


http://www.kler.cn/a/9705.html

相关文章:

  • Qt初识简单使用Qt
  • 【LeetCode】【算法】19. 删除链表的倒数第N个结点
  • 「IDE」集成开发环境专栏目录大纲
  • Redis五种数据类型剖析
  • Rust 中的 match 基本用法
  • kafka夺命连环三十问(16-22)
  • EndNote X9 插入参考文献方法 及论文参考文献常见问题总结
  • idea无maven选项
  • 佳明手表APP开发系列01——简单汉化英文版
  • synchronized的简单理解
  • QT样式表详解
  • ChatGPT原理剖析
  • 云HIS源码:云HIS系统操作指南
  • 【数据结构】栈和队列(笔记总结)
  • PHP请求的好处,PHP如何请求淘宝开放接口
  • 代码随想录算法训练营第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯
  • 20230403在WIN10下通过ffmpeg调用NVIDIA的硬件加速wmv视频转码为MP4格式
  • WEB系统页面超过一定时间就自动跳转至登录页(或退出)
  • ios jenkins配置实现iOS项目自动化打包
  • 初谈 ChatGPT
  • 【python界面编程】基于tinker界面编程加法
  • 如何降低node 包版本
  • 一文读懂:低代码开发平台对企业效益有什么作用?
  • ant design pro + umi4的动态菜单与动态路由
  • 带你玩转Python爬虫(胆小者勿进)千万别做坏事·······
  • 明明有index.jsp文件访问的时候却显示404