网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- Kotlin学习——hello kotlin & 函数function & 变量 & 类 + 泛型 + 继承
- Kotlin学习——流程控制,when,循环,range工具 & kt里的equals & if实现类似三元表达式的效果
- Kotlin学习——kt中的类,数据类 & 枚举类 & 密封类,以及对象
- Kotlin学习——kt里面的函数,高阶函数 & 函数式编程 & 扩展函数和属性
- Kotlin学习——kt里的集合List,Set,Map & List集合的各种方法之Int篇
目录
引出
1.associateBy,groupBy聚合函数,返回最后一个合适的元素以及返回所有合适元素;
2.flatMap将集合的每个元素转换为一个可迭代对象;
3.map集合的[]运算符,getValue函数;
4.getOrElse也可以应用于Map以获取给定键的值
聚合函数associateBy,groupBy
函数associateBy和groupBy从由指定键索引的集合的元素构建映射。该键是在keySelector参数中定义的。您还可以指定一个可选的valueSelector来定义将存储在map元素的值中的内容。
associateBy和groupBy之间的区别在于它们如何处理具有相同键的对象:
- associateBy使用最后一个合适的元素作为值。
- groupBy构建一个所有合适元素的列表,并将其放入值中。
package com.tianju.kt.collKt
data class Person(val name: String, val city: String, val phone: String)
fun main() {
val persons = listOf<Person>(
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(name=peter, city=shanghai, phone=12345)]
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.collKt
val 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.collKt
import java.util.NoSuchElementException
![img](https://img-blog.csdnimg.cn/img_convert/bd042f922ac0db58581111716e825bb9.png)
![img](https://img-blog.csdnimg.cn/img_convert/3a542b4f026264329841392d6e6d8d95.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
rums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**