Kotlin 不可变数组和可变数组

2023-09-18 16:43:28

在 Kotlin 中,可以使用数组来存储一组相同类型的元素。Kotlin 提供了两种类型的数组:不可变数组和可变数组。

不可变数组(Immutable Arrays)

  • 不可变数组的大小(元素数量)在创建后就确定,并且不能更改。

  • 使用 arrayOf() 函数或者 arrayOfNulls() 函数创建不可变数组。

  • 不可变数组中的元素值是固定的,不可更改。
    下面是创建和使用不可变数组的示例:

     fun main() {
         // 创建一个不可变的数组,元素类型为 Int
         val numbers = arrayOf(1, 2, 3, 4, 5)
         
         // 创建一个不可变的数组,元素类型为 String
         val fruits = arrayOf("Apple", "Banana", "Orange")
     
         // 访问数组元素
         val number = numbers[2]
         println(number) // 输出: 3
     
         // 迭代数组
         for (fruit in fruits) {
             println(fruit)
         }
     
         // 获取数组长度
         val length = numbers.size
         println(length) // 输出: 5
     }
    

在上述示例中,我们首先使用 arrayOf() 函数创建了一个包含整数的不可变数组 numbers,以及一个包含字符串的不可变数组 fruits。
我们可以使用索引运算符 [] 来访问数组中的元素。例如,numbers[2] 表示访问 numbers 数组中索引为 2 的元素,即 3。
使用 for 循环可以迭代访问数组中的元素,并打印出来。
通过 size 属性可以获取数组的长度。

可变数组(Mutable Arrays)

  • 可变数组的大小是可变的,可以根据需要进行动态调整。

  • 使用 mutableListOf() 函数或者 ArrayList 类创建可变数组。

  • 可以通过添加、删除和更新元素来修改可变数组。
    下面是创建和使用可变数组的示例:

     fun main() {
         // 创建一个空的可变数组,元素类型为 Int
         val numbers = mutableListOf<Int>()
         
         // 创建一个包含元素的可变数组,元素类型为 String
         val fruits = mutableListOf("Apple", "Banana", "Orange")
     
         // 添加元素
         numbers.add(1)
         numbers.add(2)
         numbers.add(3)
     
         // 删除元素
         fruits.remove("Banana")
     
         // 更新元素
         fruits[0] = "Grape"
     
         // 访问数组元素
         val fruit = fruits[1]
         println(fruit) // 输出: Banana
         
         // 迭代数组
         for (number in numbers) {
             println(number)
         }
     
         // 获取数组长度
         val length = fruits.size
         println(length) // 输出: 2
     }
    

在上述示例中,我们首先使用 mutableListOf() 函数创建了一个空的可变数组 numbers,以及一个包含字符串的可变数组 fruits。

我们可以使用 add() 方法向可变数组中添加元素,使用 remove() 方法删除元素。numbers.add(1) 表示将元素 1 添加到 numbers 数组中。

通过索引运算符 [] 可以访问和更新数组中的元素。例如,fruits[1] 表示访问 fruits 数组中索引为 1 的元素(原始值为 “Banana”)。

最后,我们使用 size 属性获取数组的长度。

需要注意的是:

  • 不可变数组和可变数组之间在操作上有一些差异,可变数组提供了更多的修改操作方法。
  • 当需要频繁地修改集合的大小时,可变数组更加灵活和高效。但是如果集合的大小是固定不变的,则可以选择不可变数组来提高性能和安全性。
更多推荐

leetcode 399 除法求值

399.除法求值提示给你一个变量对数组equations和一个实数值数组values作为已知条件,其中equations[i]=[Ai,Bi]和values[i]共同表示等式Ai/Bi=values[i]。每个Ai或Bi是一个表示单个变量的字符串。另有一些以数组queries表示的问题,其中queries[j]=[Cj

使用yum进行软件安装的基础命令

在Linux系统中,特别是基于RedHat、CentOS或Fedora的系统,yum(YellowdogUpdaterModified)是一个非常常用的包管理工具,用于自动下载和安装软件包以及其依赖关系。首先,请确保您的系统中已经安装了yum。通常,基于RedHat的系统默认会安装这个工具。以下是一些使用yum进行软件

【学习记录】Windows10蓝屏问题排查

一、背景家里的windows10不知道从什么时候起,各种蓝屏。原本以为是电脑用久了,散热不行,导致CPU过热保护,但慢慢的就觉得不对劲。一开始是打游戏就蓝屏,然后是看个视频就蓝屏,最后甚至是开机即蓝屏。在无能狂怒的情况下,把所有问题都推给了Win10系统(因为之前Win10确实有很多奇奇怪怪的Bug),学会了ubunt

React(react18)中组件通信05——react-redux

React(react18)中组件通信05——react-redux1.前言1.1React中组件通信的其他方式1.2介绍React-Redux1.2.1简单介绍React-Redux1.2.2官网1.3安装react-redux2.简单改写redux的例子2.1提供store2.2连接Components+UI组件修

手机记笔记软件用哪个?

当我们谈到手机上的笔记软件时,有许多选择,但如果你需要一款功能强大、易于使用且具备多样化功能的笔记应用,那么敬业签是一个极佳的选择。在使用手机笔记方面,无论你是在会议上记录灵感、在旅行中做笔记还是简单地记下日常任务,手机笔记应用可以轻松满足你的需求。它们提供了一个便捷的平台,让你随时随地记录想法和信息。这种便捷性使得手

怎么在OPPO手机桌面上添加文字?便签桌面插件添加教程

很多年轻女性在选择手机时,都比较青睐于设计时尚靓丽、轻薄且续航好、系统流畅、拍照清晰的OPPO手机,并且OPPO为不同的用户提供了高中低不同价格档位的手机型号,能够满足绝大多数女性消费者的使用需求。不过有不少OPPO手机用户表示,自己平时生活、学习、工作中的各类事情很多,有一些是需要记住、有一些是需要在指定的时间去完成

手机上比较好用的笔记软件使用哪一款?

手机已经成为我们日常生活不可或缺的一部分,它们伴随着我们的方方面面。在这部小小的设备中,我们可以完成许多任务,其中之一就是记录笔记。手机上的笔记软件如今多种多样,但在选择时,敬业签可能是你不容错过的选择。让我们谈谈手机上使用笔记的优势。手机的操作非常便捷,你可以随时随地记录你的想法、灵感或待办事项。无需再携带一本沉重的

vue Router路由

编程式导航|VueRouter看官方文档vueRouter是Vue.js的官方路由。它与Vue.js核心深度集成,让用Vue.js构建单页应用变得轻而易举。功能包括:嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由Vue.js的过渡系统提供的过渡效果细致的导航控制自动激活CSS类的链接HT

如何使用ChatGPT构建一个Web应用程序?

围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:你用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢?还有什么比亲自测试一下更好的方法呢?我们让ChatGPT从头开始构建一个简单的Web应用程序。以下是我们测试的结果,以及你可以使用ChatGPT

Vue与relation-graph:高效打造关系图的秘诀

产品提需求啦,有一个需求就是实现一个功能:展现各个文件之间的调用关系,通过关系图的形式进行展示出来。之前考虑使用antvx6实现此功能,但是考虑到只是展示的功能,也不需要进行交互,所以放弃使用antvx6,选择了更加简单的relation-graph插件。先来看一个示例项目:<template><div><divsty

【数据结构】二叉树的·深度优先遍历(前中后序遍历)and·广度优先(层序遍历)

💐🌸🌷🍀🌹🌻🌺🍁🍃🍂🌿🍄🍝🍛🍤📃个人主页:阿然成长日记👈点击可跳转📆个人专栏:🔹数据结构与算法🔹C语言进阶🚩不能则学,不知则问,耻于问人,决无长进🍭🍯🍎🍏🍊🍋🍒🍇🍉🍓🍑🍈🍌🍐🍍文章目录一、二叉树的深度优先遍历🌺1.前序遍历(1)`先序遍历`的过程

热文推荐