google建立网站,支付宝网站登录入口,wordpress时间轴模版,网站页面框架设计Kotlin 是一门现代但已成熟的编程语言#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作#xff0c;并提供了多种方式在多个平台间复用代码#xff0c;以实现高效编程。
https://play.kotlinlang.org/byExample/01_introduction/02_Functio…
Kotlin 是一门现代但已成熟的编程语言旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作并提供了多种方式在多个平台间复用代码以实现高效编程。
https://play.kotlinlang.org/byExample/01_introduction/02_Functions
其他关于kt的博客文章如下
Kotlin学习——hello kotlin 函数function 变量 类 泛型 继承Kotlin学习——流程控制when循环range工具 kt里的equals if实现类似三元表达式的效果Kotlin学习——kt中的类数据类 枚举类 密封类以及对象Kotlin学习——kt里面的函数高阶函数 函数式编程 扩展函数和属性Kotlin学习——kt里的集合ListSetMap List集合的各种方法之Int篇 目录 引出聚合函数associateBygroupByflatMap展开获得map的值 Map Element AccessgetOrElse 总结 引出 1.associateBygroupBy聚合函数返回最后一个合适的元素以及返回所有合适元素 2.flatMap将集合的每个元素转换为一个可迭代对象 3.map集合的[]运算符getValue函数 4.getOrElse也可以应用于Map以获取给定键的值
聚合函数associateBygroupBy
函数associateBy和groupBy从由指定键索引的集合的元素构建映射。该键是在keySelector参数中定义的。您还可以指定一个可选的valueSelector来定义将存储在map元素的值中的内容。
associateBy和groupBy之间的区别在于它们如何处理具有相同键的对象
associateBy使用最后一个合适的元素作为值。groupBy构建一个所有合适元素的列表并将其放入值中。
package com.tianju.kt.collKtdata class Person(val name: String, val city: String, val phone: String)fun main() {val persons listOfPerson(Person(peter,shanghai,12345),Person(Shirley,nanjing,5648),Person(watt,zero,12450),Person(watt2,zero,12450))// 键值对值为最后一个满足条件的值val phoneBook persons.associateBy { it.phone }// 键值对值是一个list {12345[Person(namepeter, cityshanghai, phone12345)]val groupPhone persons.groupBy { it.phone }println(phoneBook)println(groupPhone)//键值对键为城市值为人名的list {shanghai[peter], nanjing[Shirley], zero[watt, watt]}val peopleCities persons.groupBy(Person::city, Person::name)// 键值对键为城市值为最后一个满足条件的值val lastPersonCity persons.associateBy(Person::city, Person::name)println(peopleCities)println(lastPersonCity)
}flatMap展开
flatMap将集合的每个元素转换为一个可迭代对象并构建一个转换结果列表。转换是用户定义的。
package com.tianju.kt.collKtval fruitsBag listOf(apple,orange,banana,grapes)
val clothesBag listOf(shirts,pants,jeans)// 二维数组 [[apple, orange, banana, grapes], [shirts, pants, jeans]]
val cart listOf(fruitsBag, clothesBag)fun main() {println(cart)val mapBag cart.map { it }// [apple, orange, banana, grapes, shirts, pants, jeans]val flatMapBag cart.flatMap { it }println(mapBag)println(flatMapBag)
}获得map的值 Map Element Access
当应用于映射时[]运算符返回与给定键相对应的值如果映射中没有这样的键则返回null。
getValue函数返回与给定键对应的现有值或者在未找到该键时抛出异常。对于使用withDefault创建的映射getValue将返回默认值而不是引发异常。 package com.tianju.kt.collKtimport java.util.NoSuchElementExceptionfun main() {val map mapOf(key to 43)val value1 map[key]// 如果键不存在会返回nullval value2 map[key2]println(value1)println(value2)val value3 :Int map.getValue(key)// 给map设置一个默认的值val mapWithDefault map.withDefault { k -$k is null }println(mapWithDefault)val value4 mapWithDefault.getValue(keys)println(value4)try {val get map.getValue(str)}catch (e: NoSuchElementException){println(msg$e)}
}getOrElse
getOrElse也可以应用于Map以获取给定键的值。
package com.tianju.kt.collKtfun main() {// Int后面有问号值可以为nullval map mutableMapOfString,Int?()val orElse map.getOrElse(x) { 1 }println(orElse)map[x] 3map[y] nullprintln(map.getOrElse(x) { 1 })println(map.getOrElse(y) { 1 })
}总结
1.associateBygroupBy聚合函数返回最后一个合适的元素以及返回所有合适元素 2.flatMap将集合的每个元素转换为一个可迭代对象 3.map集合的[]运算符getValue函数 4.getOrElse也可以应用于Map以获取给定键的值