当前位置: 首页 > news >正文

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
}
http://www.lryc.cn/news/240216.html

相关文章:

  • 小诺2.0开源版工程启动
  • idea手动导入maven包
  • 2、单片机及开发板介绍
  • Leetcode 第 372 场周赛题解
  • mysql查询统计最近12个月的数据
  • 14.Python 模块
  • 三十分钟学会Linux的基本操作
  • 1688商品详情数据接口(1688.item_get)
  • SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术
  • 设计师不能忽视的几个宝藏图标设计工具
  • 设计模式-行为型模式-模板方法模式
  • 露营管理系统预约小程序效果如何
  • 【产品安全平台】上海道宁与Cybellum将整个产品安全工作流程整合到一个专用平台中,保持构建的互联产品的网络安全和网络合规性
  • css 实现鼠标上移添加下划线
  • C语言--给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组
  • Vue+Swiper实现轮播图效果
  • 竞赛选题 行人重识别(person reid) - 机器视觉 深度学习 opencv python
  • 解决vue中引入天地图显示不全问题,设置setTimeout即可解决!
  • 【OpenCV实现图像:使用OpenCV进行物体轮廓排序】
  • 【8】Spring Boot 3 集成组件:安全组件 spring security【官网概念篇】
  • UDP中connect的作用
  • Go使用开源库go-excelize操作Excel文件
  • 软件测试个人求职简历该怎么写,模板在这里
  • opencv-Hough 圆环变换
  • 福州大学《嵌入式系统综合设计》实验五:图像裁剪及尺寸变换
  • LLM之Prompt(二):清华提出Prompt 对齐优化技术BPO
  • chatglm3部署使用
  • Android扫码ZXing
  • 求解Beamforming-SOCP(CVX求解)
  • 解决Vue项目的runtime-only转为runtime-compiler