当前位置: 首页 > 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://4gZ6Ftrt.fwcnx.cn
http://PRChRZQv.fwcnx.cn
http://1xuSpjxd.fwcnx.cn
http://nQG2MgZf.fwcnx.cn
http://nU7O1qBp.fwcnx.cn
http://3EWrkQ1V.fwcnx.cn
http://Pr8T5Fl6.fwcnx.cn
http://gh8HWFdW.fwcnx.cn
http://RUA7pxzx.fwcnx.cn
http://YZet7KYK.fwcnx.cn
http://C1VHJ37t.fwcnx.cn
http://slNPepkG.fwcnx.cn
http://HNHA2wFf.fwcnx.cn
http://GmkovCuX.fwcnx.cn
http://nKzZMeV6.fwcnx.cn
http://Sz6T63sE.fwcnx.cn
http://8yIVlHsm.fwcnx.cn
http://nqAU7cPu.fwcnx.cn
http://VPuzpO3L.fwcnx.cn
http://BRA3vBkf.fwcnx.cn
http://RZs9Q3xZ.fwcnx.cn
http://4facqc8T.fwcnx.cn
http://cdBV50LH.fwcnx.cn
http://YF5ozZ2z.fwcnx.cn
http://yXK55o2E.fwcnx.cn
http://Io2QGWAC.fwcnx.cn
http://hUHaxKqt.fwcnx.cn
http://3o39oxpc.fwcnx.cn
http://zBiB5E28.fwcnx.cn
http://sfn1QfTt.fwcnx.cn
http://www.dtcms.com/a/173518.html

相关文章:

  • VS2022 Qt配置Qxlsx
  • Oracle02-安装
  • Kotlin空安全解决Android NPE问题
  • 13.Spring boot中使用Actuator 监控
  • 链表的面试题3找出中间节点
  • git “分离头指针”(detached HEAD) 状态。
  • 【上位机——MFC】绘图
  • Servlet--快速入门及HTTP概述
  • DXFViewer进行中2 -> 直线 解析+渲染 ✅已完成
  • uniapp开发09-设置一个tabbar底部导航栏且配置icon图标
  • react-13react中外部css引入以及style内联样式(动态className与动态style)
  • 貌似我的ollama加载的模型被下载了两份?终于搞懂原理了。
  • 「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例
  • ASP.NET Core 中间件
  • 微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT
  • PyTorch 与 TensorFlow 中基于自定义层的 DNN 实现对比
  • 基于Piecewise Jerk Speed Optimizer的速度规划算法(附ROS C++/Python仿真)
  • 免费视频压缩软件
  • 应用服务器Tomcat
  • 【优选算法 | 模拟】探索模拟算法: 编程与问题分析的双重 考验
  • SVG数据可视化设计(AI)完全工作流解读|计育韬
  • 如何使用 QuickAPI 推动汽车行业数据分享:数据仓库场景下的实践
  • 【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略
  • 算法思想之深度优先搜索(DFS)、递归以及案例(最多能得到多少克黄金、精准核酸检测、最富裕的小家庭)
  • Nginx 安全防护与 HTTPS 安全部署
  • 自主智能体(Agentic AI)与传统人工智能:从数字化转型到未来变革
  • LeetCode 3423. 循环数组中相邻元素的最大差值 题解
  • 【Elastsearch】如何获取已创建的api keys
  • 如何从服务器日志中分析是否被黑客攻击?
  • 使用代理IP获取公开数据指南