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.mzph.cn/news/161551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux进程通信——共享内存

概念 共享内存&#xff08;Shared Memory&#xff09;&#xff0c;指两个或多个进程共享一个给定的存储区。 特点 共享内存是最快的一种 IPC&#xff0c;因为进程是直接对内存进行存取。 因为多个进程可以同时操作&#xff0c;所以需要进行同步。 信号量共享内存通常结合在一…

Open3D (C++) 计算两点云之间的最小距离

目录 一、 算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函数提供了计算从源点云到目标点云的距离的方法,计算点云的距离。也…

python数据结构与算法-05_栈

栈 栈这个词实际上在计算机科学里使用很多&#xff0c;除了数据结构外&#xff0c;还有内存里的栈区 &#xff08;和堆对应&#xff09;&#xff0c;熟悉 C 系语言的话应该不会陌生。 上一章我们讲到了先进先出 queue&#xff0c;其实用 python 的内置类型 collections.deque …

【C语法学习】26 - strcmp()函数

文章目录 1 函数原型2 参数3 返回值4 比较机制5 示例5.1 示例1 1 函数原型 strcmp()&#xff1a;比较str1指向的字符串和str2指向的字符串&#xff0c;函数原型如下&#xff1a; int strcmp(const char *str1, const char *str2);2 参数 strcmp()函数有两个参数str1和str2&a…

HCIP-四、MUX-vlanSuper-vlan+端口安全

四、MUX-vlan&Super-vlan端口安全 MUX-vlan实验拓扑实验需求及解法1. 在SW1/2/3分别创建vlan10 20 30 402. SW1/2/3之间使用trunk链路&#xff0c;仅允许vlan10 20 30 40 通过。3. SW与PC/Server之间使用access链路。4. ping验证&#xff1a; Super-vlan端口安全实验拓扑实…

【腾讯云云上实验室-向量数据库】腾讯云开创新时代,发布全新向量数据库Tencent Cloud VectorDB

前言 随着人工智能、数据挖掘等技术的飞速发展&#xff0c;海量数据的存储和分析越来越成为重要的研究方向。在海量数据中找到具有相似性或相关性的数据对于实现精准推荐、搜索等应用至关重要。传统关系型数据库存在一些缺陷&#xff0c;例如存储效率低、查询耗时长等问题&…

CentOS使用docker安装OpenGauss数据库

1.搜索OpenGauss docker search opengauss 2.选择其中一个源拉取 docker pull docker.io/enmotech/opengauss 3.运行OpenGauss docker run --name opengauss --privilegedtrue --restartalways -d -e GS_USERNAMEpostgres -e GS_PASSWORDmyGauss2023 -p 5432:5432 docker.…

黑马React18: ReactRouter

黑马React: ReactRouter Date: November 21, 2023 Sum: React路由基础、路由导航、导航传参、嵌套路由配置 路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. …

2023年中国高压驱动芯片分类、市场规模及发展趋势分析[图]

高压驱动芯片是一种能在高压环境下工作的集成电路&#xff0c;主要用于控制和驱动各种功率器件&#xff0c;如继电器、电磁阀、电机、变频器等。高压驱动芯片根据其输出电流的大小和形式可分为两类恒流型和开关型。 高压驱动芯片分类 资料来源&#xff1a;共研产业咨询&#x…

蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)

大家好&#xff0c;我是晴天学长&#xff0c;非常经典实用的记忆化搜索题&#xff0c;当然也可以用dp做&#xff0c;我也会发dp的题解&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宫逃脱 迷官逃脱…

ubuntu操作系统中docker下Hadoop分布式前置环境配置实验

版本&#xff1a; centos7 hadoop 3.1.3 java JDK:1.8 集群规划&#xff1a; masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器&#xff1a; 把普通用户加入到docker组&am…

opencv-Canny 边缘检测

Canny边缘检测是一种经典的图像边缘检测算法&#xff0c;它在图像中找到强度梯度的变化&#xff0c;从而识别出图像中的边缘。Canny边缘检测的优点包括高灵敏度和低误检率。 在OpenCV中&#xff0c;cv2.Canny() 函数用于执行Canny边缘检测。 基本语法如下&#xff1a; edges…

代码随想录 134. 加油站

题目 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 给定两个整数数组 gas 和 cos…

本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)

按照固有思维方式&#xff0c;深度学习的训练环节应该在云端&#xff0c;毕竟本地硬件条件有限。但事实上&#xff0c;在语音识别和自然语言处理层面&#xff0c;即使相对较少的数据量也可以训练出高性能的模型&#xff0c;对于预算有限的同学们来说&#xff0c;也没必要花冤枉…

阿里云 ACK 新升级,打造智算时代的现代化应用平台

云布道师 今天&#xff0c;能想到的或是想不到的领域&#xff0c;对容器和 Kubernetes 的需求都居高不减&#xff0c;使这项技术正在真正走向无处不在。 在 2023 云栖大会上&#xff0c;阿里云云原生产品线容器服务负责人易立关于容器服务 ACK 在本届亚运会上应用的介绍&#…

[crash] cxa_pure_virtual 崩溃分析与原理

摘要&#xff1a;工作过程中处理线上的崩溃时发现了一例cxa_pure_virtual相关的crash&#xff0c;直接看堆栈基本山很容易确认是有异步调用导致出发了ABI的异常。但是对于为什么会触发cxa_pure_virtual虽然有大致的猜测但是没有直接的证据&#xff0c;因此本文主要描述触发该类…

C/C++未定义行为的例子汇总

一、什么是未定义行为&#xff1f; 未定义行为&#xff08;Undefined Behavior&#xff09;是指C语言标准未做规定的行为。同时&#xff0c;标准也从没要求编译器判断未定义行为&#xff0c;所以这些行为有编译器自行处理&#xff0c;在不同的编译器可能会产生不同的结果&#…

ElasticSearch之cat aliases API

执行aliases命令&#xff0c;如下&#xff1a; curl -X GET "https://localhost:9200/_cat/aliases?pretty&vtrue" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; alias index …

在 VSCode 中使用 GDB 进行 C/C++ 程序调试(图文版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

webpack loader

1、分类 2、执行顺序 配置类型 执行顺序是 loader1>loader2>loader3 3、使用方式 自己的第一个loader 同步loader /*** loader 就是一个函数* 当webpack 解释资源时&#xff0c; 会调用相应的loader去处理* loader 接收到文件内容作为参数&#xff0c;返回文件内容* p…