【第四阶段】kotlin语言的Map集合学习

2023-09-17 15:05:59

1.Map集合的创建

package Kotlin.Stage4

fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)  //java代表键 1代表值
    val map2= mapOf(Pair("java",1),Pair("kotlin",2))//和上面写法等价
}

2.读取map的值

  • 方式1:使用[] 如果没有键不存在则返回null
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1 使用[] 如果不存在则返回null
    println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
}

执行结果
在这里插入图片描述

  • 方式2:使用getOrDefault 如果不存在返回默认值
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1 使用[] 如果不存在则返回null
    println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
    println()
    //方式2 使用getOrDefault   如果不存在返回默认值
    println(map.getOrDefault("java",-1))
    println(map.getOrDefault("c++",-1))
}

执行结果
在这里插入图片描述

  • 方式3:使用getOrElse 如果不存在返回指定值
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1 使用[] 如果不存在则返回null
    println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
    println()
    //方式2 使用getOrDefault   如果不存在返回默认值
    println(map.getOrDefault("java",-1))
    println(map.getOrDefault("c++",-1))
    println()
    //方式3:使用getOrElse  如果不存在返回指定值
    println(map.getOrElse("java"){-1})
    println(map.getOrElse("c++"){-1})
}

执行结果
在这里插入图片描述

  • 方式4:和java一样,其中使用get 如果不存在则返回null;使用getValue,如果不存在则会崩溃,不建议使用。
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1 使用[] 如果不存在则返回null
    println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
    println()
    //方式2 使用getOrDefault   如果不存在返回默认值
    println(map.getOrDefault("java",-1))
    println(map.getOrDefault("c++",-1))
    println()
    //方式3:使用getOrElse  如果不存在返回指定值
    println(map.getOrElse("java"){-1})
    println(map.getOrElse("c++"){-1})
    println()
    //方式4:和java一样
    println(map.get("java"))//等价于[]方式
    println(map.get("c++"))
    println(map.getValue("java"))
    println(map.getValue("c++")) //会崩溃。不建议使用
}

执行结果
在这里插入图片描述
3.map的遍历

  • 方式1:foreach it
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1;foreach  it
    map.forEach(){
        //it代表每一个(k,v)
        print(" key${it.key},value${it.value}")
    }
}

执行结果
在这里插入图片描述

  • 方式2 forEach()不使用默认it
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1;foreach  it
    map.forEach(){
        //it代表每一个(k,v)
        println(" key${it.key},value${it.value}")
    }
    println()
    //方式2:不使用默认it
    map.forEach(){key:String,value:Int->
        //覆盖默认的it
        println(" key$key,value$value")
    }
}

执行结果
在这里插入图片描述

  • 方式3 foreach() 输入带括号
fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1;foreach  it
    map.forEach(){
        //it代表每一个(k,v)
        println(" key${it.key},value${it.value}")
    }
    println()
    //方式2:不使用默认it
    map.forEach(){key:String,value:Int->
        //覆盖默认的it
        println(" key$key,value$value")
    }
    println()
    //方式3
    map.forEach(){(k,v)->
        println(" key$k,value$v")
    }
}

执行结果
在这里插入图片描述

  • 方式4 for循环
package Kotlin.Stage4

fun main() {
    val map= mapOf("java" to 1,"kotlin" to 2)
    //方式1;foreach  it
    map.forEach(){
        //it代表每一个(k,v)
        println(" key${it.key},value${it.value}")
    }
    println()
    //方式2:不使用默认it
    map.forEach(){key:String,value:Int->
        //覆盖默认的it
        println(" key$key,value$value")
    }
    println()
    //方式3
    map.forEach(){(k,v)->
        println(" key$k,value$v")
    }
    println()
    //方式4
    for (item in map){
        //item代表每一个(k,v)
        println(" key${item.key},value${item.value}")
    }
}

执行结果
在这里插入图片描述
4.map可变集合

  • 可变map的定义和操作
fun main() {
    val map= mutableMapOf("AAA" to 1,"BBB" to 2)
    //可变集合操作
    map+="CCC" to (3)
    map+="DDD" to 4
    map-="DDD"
    map["EEE"]=5
    map.put("FFF",6)
    println(map["EEE"])//put和[]等价
}

执行结果
在这里插入图片描述

  • getOrPut
fun main() {
    val map= mutableMapOf("AAA" to 1,"BBB" to 2)
    //可变集合操作
    map+="CCC" to (3)
    map+="DDD" to 4
    map-="DDD"
    map["EEE"]=5
    map.put("FFF",6)
    println(map["EEE"])//put和[]等价

    println()
    //  getOrPut
    //键没有的情况,会将他先添加进集合中。
    map.getOrPut("GGG"){8}
    println(map["GGG"])
    //键有的情况,会读取存在的值,并且默认值失效
    map.getOrPut("AAA"){9}
    println(map["AAA"])
}

执行结果
在这里插入图片描述

更多推荐

Stellar Toolkit for MySQL 9.0 Crack 3in1

面向数据库管理员的MySQL工具包StellarToolkitforMySQL是一款三合一软件套件,用于修复损坏的MySQL和MariaDB数据库、从MySQL数据库的InnoDB和MyISAM表恢复数据以及分析MySQL数据库日志文件。该软件还可以以最高的安全性和完整性相互转换MySQL/MariaDB、MSSQL(

【跟晓月学数据库】基于book库的mysql进阶实战

前言上篇文章中,我们已经导入了book库,如果你还没有导入book库,参考:【跟晓月学数据库】使用MySQLdump对数据导入导出这篇文章,主要是基于book库的操作,希望对你有用。🏠个人主页:我是沐风晓月🧑个人简介:大家好,我是沐风晓月,阿里云社区专家博主😉😉💕座右铭:先努力成长自己,再帮助更多的人,一起加

运营商大数据精准营销获客?

多年来,大数据运营商一直致力于为企业提供互联网大数据精准营销的新项目,并以确保自身信息安全为前提。例如,如果移动用户查看了任何网站,在网页上搜索了任何关键词,登录了应用程序,给任何人打了电话,以及隶属地区、性別,所有这些都由运营商存储,那么企业可以提供需求,运营商可以根据客户行为找到准确的意向客户。高质量的新客户可以基

定义爬虫规则和数据存储

定义爬虫规则是指确定爬虫程序应该如何访问和提取网页数据的规则。这些规则包括确定要爬取的网页的URL、确定要提取的数据类型和位置、确定爬取的深度和频率等。爬虫规则通常由以下几个方面组成:起始URL:确定爬虫程序开始爬取的网页URL。URL过滤规则:确定哪些URL应该被爬取,哪些URL应该被忽略。可以使用正则表达式或其他方

支持向量机(SVM)案例分析

支持向量机(supportvectormachines,SVM)是一种二分类模型,所谓二分类模型是指比如有很多特征(自变量X)对另外一个标签项(因变量Y)的分类作用关系,比如当前有很多特征,包括身高、年龄、学历、收入、教育年限等共5项,因变量为‘是否吸烟’,‘是否吸烟’仅包括两项,吸烟和不吸烟。那么该5个特征项对于‘是

【C++基于多设计模式下的同步&异步日志系统】

文章目录@[toc]1:peach:项目介绍:peach:2:peach:开发环境:peach:3:peach:核心技术:peach:4:peach:环境搭建:peach:5:peach:日志系统介绍:peach:5.1:apple:为什么需要日志系统?:apple:5.2:apple:日志系统技术实现:apple:5

Java 消息策略的实现 - Kafak 是怎么设计的

这个也是开放讨论题,主要讨论下Kafka在消息中是如何进行实现的。1_cCyPNzf95ygMFUgsrleHtw976×50621.4KB总结这个题目的开发性太强了。Kafka可以用的地方非常多,我经历过的项目有Kafka用在消息处理策略上的。这个主要是IoT项目,因为这个项目需要对温度传感器采集获得数据。当我们有多

局部放电试验电源的频率、 电压及持续时间和判断

1)电压频率、电压及持续时间。为保证被试变压器加压时,铁心不磁饱和,应尽量减小试验电源频率,以利于减小补偿电感的容量。220kV及以上变压器进行局放试验施加电压与时间见下表:|施加电压|(1.3~1.5)Um/√3|1.7Um/√3|(1.3~1.5)Um/√3||------------|------------|-

单元测试 —— JUnit 5 参数化测试

JUnit5参数化测试目录设置我们的第一个参数化测试参数来源@ValueSource@NullSource&@EmptySource@MethodSource@CsvSource@CsvFileSource@EnumSource@ArgumentsSource参数转换参数聚合奖励总结如果您正在阅读这篇文章,说明您已经熟

SpringCache -- Redis --- 配置与缓存使用--配置过期时间

写在前面:学redis,还是得搭配SpringCache来玩一玩。前置内容win安装+redis基础springboot使用redis文章目录导入依赖配置cache使用@Cacheable@CachePut@CacheEvict配置过期时间依据cacheName设置在注解上截取过期时间导入依赖<!--redis依赖--

面试:经典问题解决思路

1.秒杀系统架构参考:秒杀系统架构优化思路2.如何防止订单重复提交重复提交原因:一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。另一种则是由于Nginx或类似于SpringCloudGateway的网关层,进行超时重试造成的。方案描述优点缺点方案一提交订单按钮置灰简单易实现,常用于短信验证码场景只能解决

热文推荐