Kotlin的Map
在 Kotlin 中,Map 是一种键值对的集合数据结构,用于存储一组关联的键和值。Kotlin 标准库提供了 Map 接口和多种实现类,使得操作和处理键值对数据更加方便。下面详细描述 Kotlin 的 Map 的用法:
创建 Map
Kotlin 提供了几种方式来创建 Map:
使用 mapOf() 函数创建具有指定内容的只读映射,并以成对的列表的形式给出,其中第一个值为键,第二个为值。
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
使用 mutableMapOf() 函数创建可变映射:
val mutableMap: MutableMap<String, String> = mutableMapOf("apple" to "red", "banana" to "yellow")
基本操作
获取值:
package com.zetcodefun main() {val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println(items["Tom"])println(items.getValue("Tom"))println(items.get("Tom"))println(items.getOrDefault("Tom", 0))println(items.getOrDefault("Tom", 0))val nOfPencils = items.getOrElse("Tom", { 0 })println(nOfPencils)
}
获取大小:
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("${items.size},${items.count()}")
获取所有元素,键,值
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("${items.entries},${items.keys},${items.values}")
判断是否包含键:
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("Lisa" in items)
containsKey()检查映射是否包含密钥,containsValue()检查映射是否包含值
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println(items.containsKey("Lisa"))
可变映射特有操作
添加或修改键值对
val items = mutableMapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)items["Lisa"]=20items["Tab"]=34println(items.entries)
删除键值对
items.remove("apple")
清空map
items.clear()
Map遍历
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)for ((k,v) in items){println("$k,$v")}items.forEach{(k,v)->println("$k,$v")}
Map 扩展函数
Kotlin 标准库提供了丰富的扩展函数来操作 Map,如 filterKeys、filterValues、mapValues、keys 等。
val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)val mappedMap = items.mapValues { it.value * 2 }println(mappedMap)val filtered = items.filterKeys { it == "Lisa" || it == "Tom" }println(filtered)val filtered2 = items.filterValues { it >= 70 }println(filtered2)val filtered3 = items.filter { it.key == "Bob" || it.value == 50 }
Map 的实现类:
Kotlin 提供了几种 Map 的实现类,其中最常用的是 HashMap 和 LinkedHashMap:
HashMap:无序的键值对集合,内部使用哈希表实现,适用于快速查找。
LinkedHashMap:有序的键值对集合,内部使用链表和哈希表实现,保持键的插入顺序。
可变 Map 和不可变 Map:
Kotlin 中的 Map 可以分为可变(MutableMap)和不可变(Map)两种类型。可变 Map 允许添加、删除和修改键值对,不可变 Map 则不能改变其内容。
val immutableMap: Map<String, Int> = mapOf("one" to 1, "two" to 2)
val mutableMap: MutableMap<String, String> = mutableMapOf("apple" to "red", "banana" to "yellow")
注意事项:
Map 中的键是唯一的,每个键关联一个值。
不同于列表或集合,Map 是一种具有键值对结构的数据类型。
Map 的性能取决于底层数据结构,如 HashMap 的查找效率较高。
总之,Kotlin 的 Map 是一种用于存储键值对的数据结构,提供了丰富的操作和处理功能。通过选择合适的实现类和了解常用操作,可以更高效地处理键值对数据。
相关文章:
Kotlin的Map
在 Kotlin 中,Map 是一种键值对的集合数据结构,用于存储一组关联的键和值。Kotlin 标准库提供了 Map 接口和多种实现类,使得操作和处理键值对数据更加方便。下面详细描述 Kotlin 的 Map 的用法: 创建 Map Kotlin 提供了几种方式…...
STM32 串口复习
按数据通信方式分类: 串行通信:数据逐位按顺序依次传输。传输速率较低,抗干扰能力较强,通信距离较长,I/O资源占用较少,成本较低。并行通信:数据各位通过多条线同时传输。 按数据传输方向分类&…...
VScode替换cmd powershell为git bash 终端,并设置为默认
效果图 步骤 1. 解决VScode缺少git bash的问题_failed to start bash - is git-bash.exe on the syst_Rudon滨海渔村的博客-CSDN博客效果解决步骤找到git安装目录下的/bin/bash.exe,复制其绝对路径,例如D:\Program Files\Git\bin\bash.exe把路径的右斜…...
网络基础(一)桥接网络
网络基础知识 桥接网络 桥接网络是一种网络设计技术,其目的是将两个或多个网络段连接在一起,使它们在逻辑上表现为单个网络。这通过使用网络桥来实现,网络桥工作在数据链路层(第2层),只关心MAC地址&#…...
C#程序变量统一管理例子 - 开源研究系列文章
今天讲讲关于C#应用程序中使用到的变量的统一管理的代码例子。 我们知道,在C#里使用变量,除了private私有变量外,程序中使用到的公共变量就需要进行统一的存放和管理。这里笔者使用到的公共变量管理库划分为:1)窗体;2)…...
信息熵,信息增益,增益率的理解
西瓜数据集D如下: 编号色泽根蒂敲声纹理脐部触感好瓜1青绿蜷缩浊响清晰凹陷硬滑是2乌黑蜷缩沉闷清晰凹陷硬滑是3乌黑蜷缩浊响清晰凹陷硬滑是4青绿蜷缩沉闷清晰凹陷硬滑是5浅白蜷缩浊响清晰凹陷硬滑是6青绿稍蜷浊响清晰稍凹软粘是7乌黑稍蜷浊响稍糊稍凹软粘是8乌黑稍蜷浊响清晰…...
二级MySQL(一)——基本概念与方法
数据库系统的核心是【数据库管理系统】 E-R图提供了表示信息世界中的方法,主要有实体、属性和【联系】 E-R图是数据库设计的工具之一,一般适用于建立数据库的【概念模型】 将E-R图转换到关系模式时,实体与联系都可以表示成【关系】 关系数…...
13 Web全栈 pnpm
什么是pnpm? 可以理解成performant npm缩写 速度快、节省磁盘空间的软件包管理器 特点 快速- pnpm比其他包管理器快2倍高效- node_modules中的文件链接自特定的内容寻址存储库支持monorepos- 内置支持单仓多包严格- pnpm默认创建了一个非平铺的node_modules 因此代…...
回归预测 | MATLAB实现CSO-BP布谷鸟优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现CSO-BP布谷鸟优化算法优化BP神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现CSO-BP布谷鸟优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)效果一览…...
JavaScript中的事件冒泡和事件捕获机制
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 事件冒泡和事件捕获机制⭐ 事件冒泡(Event Bubbling)⭐ 事件捕获(Event Capturing)⭐ 停止事件传播⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或…...
秋招面经——结合各方面试经验
Mysql mysql事务 共享锁与排他锁 共享锁:允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。(读都允许读,但我在读不允许你去改) 排他锁:允许一个事务去读一行,阻止其他事务获得相同…...
Python random模块用法整理
随机数在计算机科学领域扮演着重要的角色,用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能,本文整理了 random 模块的使用。 文章目录 Python random 模块注意事项Python random 模块的内置…...
【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单
🧑💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…...
基于Python的HTTP代理爬虫开发初探
前言 随着互联网的发展,爬虫技术已经成为了信息采集、数据分析的重要手段。然而在进行爬虫开发的过程中,由于个人或机构的目的不同,也会面临一些访问限制或者防护措施。这时候,使用HTTP代理爬虫可以有效地解决这些问题࿰…...
时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现WOA-…...
每日一题之二进制中1的个数
二进制中1的个数 问题描述: 输入一个整数 n ,输出该数 32 位二进制表示中 1 的个数。其中负数用补码表示。 科普一下有符号数的三种表示:原码、反码和补码,可能有时候遗忘了。 真值:带有符号位的机器数(一…...
8.17校招 内推 面经
绿泡泡: neituijunsir 交流裙,内推/实习/校招汇总表格 1、校招 | 腾讯2024校园招聘全面启动(内推) 校招 | 腾讯2024校园招聘全面启动(内推) 2、校招 | 大华股份2024届全球校园招聘正式启动(内推) 校招 | 大华股份2024届全球校园招聘正式启动(内推) …...
VScode搭建Opencv(C++开发环境)
VScode配置Opencv 一、 软件版本二 、下载软件2.1 MinGw下载2.2 Cmake下载2.3 Opencv下载 三、编译3.1 cmake-gui3.2 make3.3 install 四、 VScode配置4.1 launch.json4.2 c_cpp_properties.json4.3 tasks.json 五、测试 一、 软件版本 cmake :cmake-3.27.2-windows-x86_64 Mi…...
Redis高可用:哨兵机制(Redis Sentinel)详解
目录 1.什么是哨兵机制(Redis Sentinel) 2.哨兵机制基本流程 3.哨兵获取主从服务器信息 4.多个哨兵进行通信 5.主观下线和客观下线 6.哨兵集群的选举 7.新主库的选出 8.故障的转移 9.基于pub/sub机制的客户端事件通知 1.什么是哨兵机制…...
Hadoop小结(上)
最近在学大模型的分布式训练和存储,自己的分布式相关基础比较薄弱,基于深度学习的一切架构皆来源于传统,我总结了之前大数据的分布式解决方案即Hadoop: Why Hadoop Hadoop 的作用非常简单,就是在多计算机集群环境中营…...
570-‘基于坠落机制改进的混沌麻雀算法SSACD‘在23个标准测试函数上可直接运行Matlab语言
570-基于坠落机制改进的混沌麻雀算法SSACD在23个标准测试函数测试可直接运行 Matlab语言 改进点如下: 1.首先,引入Sinusoidal混沌映射和变尺度混沌策略对种群进行初始化,提高种群多样性使算法具备跳出局部最优解的能力 2.其次,引入…...
告别激光雷达?手把手教你用CRN低成本实现BEV 3D感知(附PyTorch代码)
低成本BEV 3D感知实战:用CRN实现相机-雷达融合(附完整PyTorch代码) 在自动驾驶和机器人领域,3D环境感知一直是核心技术瓶颈。传统激光雷达方案虽精度高,但成本动辄数万元,且受天气影响显著。我们团队经过半…...
extern ‘C‘原理与C/C++混合编程实践
1. 深入解析extern C的底层原理与工程实践1.1 C/C混合编程的核心挑战在嵌入式系统开发中,C与C语言的混合编程是常见需求。当C代码需要调用C语言编写的库函数时,编译器对函数名的处理方式差异会导致链接错误。这种差异源于两种语言对函数重载和名字空间的…...
4步精通OpenCore EFI制作:OpCore-Simplify智能配置引擎全解析
4步精通OpenCore EFI制作:OpCore-Simplify智能配置引擎全解析 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在黑苹果技术领域࿰…...
从零部署一个AI对话机器人:实战对比Gradio的Streaming UI与FastAPI的轻量API方案
从零部署一个AI对话机器人:实战对比Gradio的Streaming UI与FastAPI的轻量API方案 在AI应用开发领域,构建一个可交互的对话机器人已成为开发者验证想法、展示成果的标配需求。不同于传统Web开发的复杂架构,现代工具链让开发者能够用极简代码实…...
解密SWAT模型中的土壤水分特性:如何用SPAW快速计算AWC与饱和导水率?
土壤水分特性在SWAT模型中的关键作用与SPAW实战指南 土壤水分参数对水文模拟的影响机制 在分布式水文建模领域,土壤水分特性参数犹如隐藏在水循环方程式中的密码钥匙。这些看似简单的数值背后,实则决定着水分在土壤剖面中的运移轨迹、植物根系的吸水效率…...
3个革命性步骤:分布式推理让普通设备实现本地化AI部署
3个革命性步骤:分布式推理让普通设备实现本地化AI部署 【免费下载链接】LocalAI mudler/LocalAI: LocalAI 是一个开源项目,旨在本地运行机器学习模型,减少对云服务的依赖,提高隐私保护。 项目地址: https://gitcode.com/GitHub_…...
技术赋能B端拓客:号码核验行业的破局与价值重塑,氪迹科技法人股东号码筛选系统,阶梯式价格
2026年,B端拓客正式迈入智能内卷时代,“精准获客、降本增效”成为企业突破业绩瓶颈的核心关键词,而号码核验作为拓客流程的前置过滤环节,直接决定了线索质量与人力效能,成为影响拓客投入回报比的关键变量。当前&#x…...
5个颠覆性智能测试提升技巧:Claude Code自动化测试生成全解析
5个颠覆性智能测试提升技巧:Claude Code自动化测试生成全解析 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining …...
Buildah多平台容器构建终极指南:使用QEMU跨架构构建Docker镜像
Buildah多平台容器构建终极指南:使用QEMU跨架构构建Docker镜像 【免费下载链接】buildah A tool that facilitates building OCI images. 项目地址: https://gitcode.com/gh_mirrors/bu/buildah Buildah作为专业的OCI镜像构建工具,为开发者提供了…...
