当前位置:首页 > 编程笔记 > 正文
已解决

Kotlin学习——kt里的集合,Map的各种方法之String篇

来自网友在路上 11388138提问 提问时间:2023-11-26 20:31:49阅读次数: 138

最佳答案 问答题库1388位专家为你答疑解惑

在这里插入图片描述

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里的集合List,Set,Map & List集合的各种方法之Int篇

目录

  • 引出
    • 聚合函数associateBy,groupBy
    • flatMap展开
    • 获得map的值 Map Element Access
    • getOrElse
  • 总结

引出


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.collKtdata 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.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 = mutableMapOf<String,Int?>()val orElse = map.getOrElse("x") { 1 }println(orElse)map["x"] = 3map["y"] = nullprintln(map.getOrElse("x") { 1 })println(map.getOrElse("y") { 1 })
}

总结

1.associateBy,groupBy聚合函数,返回最后一个合适的元素以及返回所有合适元素;
2.flatMap将集合的每个元素转换为一个可迭代对象;
3.map集合的[]运算符,getValue函数;
4.getOrElse也可以应用于Map以获取给定键的值

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Kotlin学习——kt里的集合,Map的各种方法之String篇":http://eshow365.cn/6-42193-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!