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