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

Kotlin 中 List 和 MutableList 的区别

在 Kotlin 中,List 和 MutableList 是两种不同的集合接口,核心区别在于可变性。

Kotlin 集合框架的重要设计原则:通过接口分离只读(read - only)和可变(mutable)操作,以提高代码的安全性和可维护性。

List:是不可变集合接口(线程安全),一旦创建,其元素数量和元素内容都不能被修改。这种不可变有助于提高代码的安全性和可维护性,避免意外的数据修改。

val list = listOf("A", "B", "C")
list[0] = "X" // 编译错误!不允许修改
list.add("D") // 变异错误!没有 add 方法

MutableList:是可变集合接口,允许对集合中的元素进行添加、删除、修改等操作。这使得 MutableList 更加灵活,适用于需要动态改变集合内容的场景。

val mutableList = mutableListOf("A", "B", "C")
mutableList[0] = "X" // 允许修改
mutableList.add("D") // 允许添加
mutableList.removeAt(1) // 允许删除

只读 —> 可变:使用 toMutableList() 创建新的可变副本:

val list = listOf(1, 2, 3)
val mutableList = list.toMutableList() // 新对象
mutableList.add(4)

可变 —> 只读:使用 toList() 创建新的只读副本:

val mutable = mutableListOf(1, 2, 3)
val readOnly = mutable.toList()
http://www.xdnf.cn/news/303139.html

相关文章:

  • 网络自动化与可观测性:构建自愈型智能网络体系
  • 什么是进程,如何管理进程
  • 【2025】Visio 2024安装教程保姆级一键安装教程(附安装包)
  • Java基础学完,继续深耕(0506)SQL--多表关系
  • Kotlin-访问权限控制
  • unittest自动化测试实战
  • 文件上传漏洞篇:upload-labs靶场搭建
  • 栈与队列详解及模拟实现
  • 未来 CSS:变量、容器查询与新特性的探索
  • 硬件工程师面试常见问题(16)
  • Deepseek流式操作与用户行为数据分析day01
  • 【Linux】基础开发工具
  • Flutter开发HarmonyOS实战-鸿蒙App商业项目
  • Mac电脑,idea突然文件都展示成了文本格式,导致ts,tsx文件都不能正常加载或提示异常,解决方案详细说明如下
  • Mathematica中的ResourceFunction
  • Oracle中游标和集合的定义查询及取值
  • 使用 git subtree 方法将六个项目合并到一个仓库并保留提交记录
  • Python Cookbook-7.4 对类和实例使用 cPickle 模块
  • 家庭宽带IP与IDC机房IP
  • 第100+40步 ChatGPT学习:R语言实现多轮建模
  • 用 Tailwind CSS 优化你的 Vue 3 项目! ! !
  • MySQL从入门到精通(一):MySQL介绍及数据库相关概念
  • 高级java每日一道面试题-2025年5月02日-基础篇[反射篇-编码]-使用反射,获取Class对象
  • WPF MVVM入门系列教程(五、命令和用户输入)
  • 如何使用vmstat 和 free 查看内存碎片化信息?
  • Qwen3与Deepseek R1对比(截止20250506)
  • C++ - 仿 RabbitMQ 实现消息队列(1)(环境搭建)
  • 典籍知识问答模块AI问答功能feedbackBug修改+添加对话名称修改功能
  • MySQL基础关键_009_DDL 和 DML(二)
  • vue源代码采用的设计模式分解