2:kotlin集合(Collections)
集合有助于数据分组,方便后续操作
| 集合类型 | 说明 |
|---|---|
| Lists | 有序的可重复的集合 |
| Sets | 无序的不可重复的集合 |
| Maps | 键值对映射集合,键唯一,且一个键只能映射到一个值 |
每个集合类型都可以是可变的或者只读的
List
List按照添加的顺序存储内容,并允许重复
存储的内容通常称作
元素
List类型
创建只读List使用listOf()方法
创建可变List使用mutableListOf()方法
在创建列表时,Kotlin可以推断存储项的类型。可以在列表声明后的尖括号<>中添加类型来显式声明类型
fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println(readOnlyShapes) // [triangle, square, circle]val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")println(shapes) // [triangle, square, circle]shapes[2] = "circle2"// shapes[3] = "circle3" // Index 3 out of bounds for length 3println(shapes) // [triangle, square, circle2]
}
操作
MutableList索引不能超过初始长度
为了防止不必要的修改,你可以通过将可变列表赋值给List来获得它们的只读视图
fun main() {val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")val shapesLocked: List<String> = shapes
}
这种方式通常叫做铸造(casting)
List常用方法
查看List方法
获取元素
fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("The first item in the list is: ${readOnlyShapes[0]}") // The first item in the list is: triangleprintln("The first item in the list is: ${readOnlyShapes.first()}") // The first item in the list is: triangleprintln("The last item in the list is: ${readOnlyShapes.last()}") // The last item in the list is: circle
}
获取长度
fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("This list has ${readOnlyShapes.count()} items") // This list has 3 items
}
判断是否包含某一元素
fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("circle" in readOnlyShapes) // true
}
新增和删除
fun main() {val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")// 添加 "pentagon"shapes.add("pentagon")println(shapes) // [triangle, square, circle, pentagon]// 删除第一个 "pentagon"shapes.remove("pentagon")println(shapes) // [triangle, square, circle]
}
Set
Set集合中存储的数据无序并且不能重复
Set类型
创建只读Set使用setOf()方法
创建可变Set使用MutableList()方法
fun main() {val readOnlyFruit = setOf("apple", "banana", "cherry", "cherry")val fruit: MutableSet<String> = mutableSetOf("apple", "banana", "cherry", "cherry")
}
Set常用方法
获取元素
因为Set为无序集合,所以不能通过索引获取集合元素
fun main() {val set = setOf("apple", "banana", "cherry", "cherry")println("The first item in the set is: ${set.first()}") // The first item in the set is: appleprintln("The last item in the set is: ${set.last()}") // The last item in the set is: cherry
}
Map
Map以键值对的形式存储数据。你可以通过引用键来访问值
键是唯一的,如果插入重复键则会覆盖之前的值
Map类型
要创建只读Map,使用mapOf()函数
要创建可变地图MutableMap,使用mutableMapOf()函数
在创建
Map时,kotlin可以推断出存储的元素类型。要显式声明类型,可以在Map声明后的尖括号<>中添加键和值的类型。例如:MutableMap<String, Int>。键的类型为String,值的类型为Int
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu) // {apple=100, kiwi=190, orange=100}val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(juiceMenu) // {apple=100, kiwi=190, orange=100}
}
常用方法
获取数据
使用键获取值
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu["apple"]) // 100
}
获取所有的键或者值
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.keys) // [apple, kiwi, orange]println(readOnlyJuiceMenu.values) // [100, 190, 100]
}
获取键值对数量
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.count()) // 3
}
修改/删除
fun main() {val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)juiceMenu.put("coconut", 150) // 添加键"coconut"和值 150println(juiceMenu) // {apple=100, kiwi=190, orange=100, coconut=150}juiceMenu.put("apple", 200) // 修改"coconut"的值成 200println(juiceMenu) // {apple=200, kiwi=190, orange=100, coconut=150}juiceMenu.remove("orange") // 删除"orange"println(juiceMenu) // {apple=200, kiwi=190, coconut=150}
}
是否包含某元素
是否包含某个键
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.containsKey("kiwi")) // trueprintln("orange" in readOnlyJuiceMenu.keys) // true
}
是否包含某个值
fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(200 in readOnlyJuiceMenu.values) // false
}
相关文章:
2:kotlin集合(Collections)
集合有助于数据分组,方便后续操作 集合类型说明Lists有序的可重复的集合Sets无序的不可重复的集合Maps键值对映射集合,键唯一,且一个键只能映射到一个值 每个集合类型都可以是可变的或者只读的 List List按照添加的顺序存储内容ÿ…...
小诺2.0开源版工程启动
小诺是一款开源的前后端开发框架,同若依、SpringBladex一样可作为私活、外包脚手架。 开源地址:Snowy: 最新:💖国内首个国密前后分离快速开发平台💖,采用Vue3AntDesignVue3 ViteSpringBootMpHuToolSaToke…...
idea手动导入maven包
当maven仓库中没有包时,我们需要手动导入jar到maven项目中 1.这里的maven设置成你自己安装的maven 2.查看pom.xml文件中maven,以下面为例 <dependency><groupId>com.jdd.pay</groupId><artifactId>mapi-sdk-v3</artifactId&…...
2、单片机及开发板介绍
单片机介绍 单片机,英文Micro Controller Unit,简称:MCU 内部集成:CPU、RAM(随机存储器)、ROM(只读存储器)、定时器、中断系统、通讯接口等 作用:信息采集(传感器)、处理࿰…...
Leetcode 第 372 场周赛题解
Leetcode 第 372 场周赛题解 Leetcode 第 372 场周赛题解题目1:2937. 使三个字符串相等思路代码复杂度分析 题目2:2938. 区分黑球与白球思路代码复杂度分析 题目3:2939. 最大异或乘积思路代码复杂度分析 题目4:2940. 找到 Alice 和…...
mysql查询统计最近12个月的数据
项目场景: mysql查询统计最近12个月的数据,按每个月纵向展示,效果图 sql语句 注意:count( v.uuid ) 这里的是被统计那张表的id SELECT m.month,count( v.uuid ) AS total FROM (SELECT DATE_FORMAT(( CURDATE()), %Y-%m ) AS mon…...
14.Python 模块
目录 1. 使用模块2. 使用包3. 常用模块3.1 日期和时间3.2 伪随机数3.3 摘要算法3.4 JSON 处理3.5 图像处理 模块是Python用来组织代码的一种方法,包是Python用来组织模块的一种方法。 常用基本语法如下: Windows 按住winR 输入 cmd,Mac 打开…...
三十分钟学会Linux的基本操作
GNU/Linux GNU项目是由Richard Stallman发起的自由软件运动,旨在创建一个完全自由的操作系统。虽然GNU项目已经开发了大量的系统组件和工具,但它一直缺少一个完整的操作系统内核。在这时Linus Torvalds开发了Linux内核,并将其发布为自由软件…...
1688商品详情数据接口(1688.item_get)
1688商品详情数据接口是一种程序化的接口,通过这个接口,商家或开发者可以使用自己的编程技能,对1688平台上的商品信息进行查询、获取和更新。这个接口允许商家根据自身的需求,获取商品的详细信息,例如价格、库存、描述…...
SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术
大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…...
设计师不能忽视的几个宝藏图标设计工具
在这个快速变化的时代,设计师对创新和实用工具的需求越来越大。这就要求我们及时跟上潮流,不断探索和尝试最新、最有价值的图标设计工具。只有这样,我们才能在竞争激烈的设计市场中脱颖而出。以下是我们精心挑选的2024年值得一试的图标设计工…...
设计模式-行为型模式-模板方法模式
一、什么是模板模式 模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法骨架,允许子类在不改变算法整体结构的情况下重新定义算法的某些步骤。 主要组成部分: 1、模板方法(Templ…...
露营管理系统预约小程序效果如何
旅游经济已经复苏,并且市场规模增速加快,近一年来远途/周边游客户增多,不少旅游景区在节假日常常面对客流爆满现象。同时露营作为近几年突然火热的项目,其需求也是日渐上升。 然而在高需求的同时,我们也看到露营经营痛…...
【产品安全平台】上海道宁与Cybellum将整个产品安全工作流程整合到一个专用平台中,保持构建的互联产品的网络安全和网络合规性
Cybellum将 整个产品安全工作流程 整合到一个专用平台中 使设备制造商能够 保持他们构建的互联产品的 网络安全和网络合规性 产品安全性对 每个人来说都不一样 每个行业的系统、工作流程和 法规都存在根本差异 因此,Cybellum量身定制了 Cybellum的平台和技…...
css 实现鼠标上移添加下划线
效果图 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…...
C语言--给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组
一.题目描述: 给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组。 比如:输入一个数组是5ÿ…...
Vue+Swiper实现轮播图效果
效果展示 实现了自带切换按钮在图片外部实现了自定义的切换按钮 背景 在项目中使用到了轮播图,实现点击上一张下一张时实现循环显示,同时预览两个图片,并加以文字对图片的说明。 设计 使用 Swiper 插件,可以实现当前这个需求。…...
竞赛选题 行人重识别(person reid) - 机器视觉 深度学习 opencv python
文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习行人重识别(person reid)系统 该项目…...
解决vue中引入天地图显示不全问题,设置setTimeout即可解决!
index.html中引入天地图api <script type"text/javascript" src"https://api.tianditu.gov.cn/api?v4.0&tk你的key"></script>map.vue中初始化天地图 //初始化天地图 initTMap() {const T window.T;// 3.初始化地图对象this.tMap new…...
【OpenCV实现图像:使用OpenCV进行物体轮廓排序】
文章目录 概要读取图像获取轮廓轮廓排序小结 概要 在图像处理中,经常需要进行与物体轮廓相关的操作,比如计算目标轮廓的周长、面积等。为了获取目标轮廓的信息,通常使用OpenCV的findContours函数。然而,一旦获得轮廓信息后&#…...
多模态生成式AI技术解析与NVIDIA NeMo实战
1. 多模态生成式AI的现状与挑战过去两年里,生成式AI已经从单一的文本生成发展到多模态交互的新阶段。作为一名长期跟踪AI技术演进的从业者,我亲眼见证了这一转变过程。早期的GPT-3只能处理文字,而现在的多模态模型已经可以同时理解图像、视频…...
【Qt】Qt窗口(一)窗口概览,QMenuBar菜单栏的使用
小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 Qt系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录前言一、窗口概览二、菜单栏的使用菜单栏的介绍MainWindow窗口和Widget窗口的区别使…...
08-5084-03 P/S 28V 输入 30 KV 输出总成
孙136-6506-88121. 产品概述型号含义:08-5084-03 是霍尼韦尔的特定部件编号。其中:“P/S” 通常表示“电源”(Power Supply),表明这是一个电源转换设备。“28V 输入” 指输入电压为28伏特直流(DC࿰…...
PyTorch深度学习实战 |SegNet
🌞欢迎来到PyTorch深度学习实战的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 📆首发时间:🌹2026年4月29日🌹 ✉️希望可以和大家…...
医疗器械环境运输试验概要
医疗器械环境运输试验概要 标准GB/T 14710是中国针对医用电气设备环境适应性及运输试验的国家标准,全称为《医用电气设备环境要求及试验方法》。该标准规定了医用电气设备在不同环境条件下的适应性测试要求,包括气候、机械、运输等多个方面,确…...
本地部署 Qwen2.5-1.5B-Instruct 全流程教程|Ollama + 魔搭双方案
在人工智能技术飞速发展的今天,大语言模型已经从云端服务走向本地部署,轻量化大模型凭借体积小、速度快、无需联网、隐私安全等优势,成为 AI 开发者、编程爱好者入门学习的最佳选择。Qwen2.5-1.5B-Instruct 作为通义千问系列的轻量级开源模型…...
置顶必读(1) | 《YOLOv12实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)
🏆 本文收录于 《YOLOv12实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv12 官方特性、Attention-Centric 架构、R-ELAN、Area Attention 等核心创新,内容坚持 严格贴合官方文档 深度原理拆解 工程落地导向,不仅…...
深度测评2026年五大最佳在线预约小程序推荐榜单,让你体验便捷生活新高度
本次深度测评聚焦2026年主流在线预约小程序的整体发展态势与功能特性,以客观视角剖析当前市场中五款代表性工具的核心优势与适用场景。从底层技术架构到用户体验设计,这些在线预约系统均展现出不同程度的智能化与适配能力,为餐饮、医疗、美容…...
数据湖架构实践
数据湖架构实践:解锁企业数据价值的新范式 在数据爆炸的时代,企业如何高效存储、管理和分析海量异构数据成为关键挑战。数据湖架构应运而生,以其低成本、高扩展性和灵活性成为企业数据战略的核心。本文将深入探讨数据湖的实践路径࿰…...
微信H5导航踩坑实录:绕过限制调用高德/百度地图,我用这招解决了(附完整代码)
微信H5导航功能深度优化:跨平台地图调用的实战解决方案 在移动互联网时代,H5页面作为轻量级应用载体,经常需要集成地图导航功能。然而,微信浏览器环境下的特殊限制让这一看似简单的需求变得异常复杂。本文将分享一套经过实战检验的…...
