You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kotlin中创建可变长度不可变列表有无更简洁的实现方式?

Kotlin 标准库原生极简写法

Kotlin 1.3及以上版本可以直接使用标准库提供的List工厂函数一行实现,返回的本身就是只读不可变列表,不需要额外包装:

// 注意原代码循环范围是0..size(闭区间,总元素数为size+1),如果实际需要size个元素去掉+1即可
val immutableList = List(nextInt(0, 50) + 1) { 
    getRandomPost() 
}

写法说明

  • 第一个参数为要生成的列表总长度
  • 第二个参数是索引对应的元素生成lambda,可在内部实现任意生成逻辑,和你之前用map转换其他列表的逻辑完全同源,只是数据源从其他列表的元素换成了索引序列
  • 返回的List是Kotlin原生只读集合,类型层面就禁止了修改操作,比Collections.unmodifiableList的视图包装更符合Kotlin开发习惯

兼容低版本Kotlin的替代写法

如果使用的Kotlin版本低于1.3,可以用generateSequence配合take实现:

val immutableList = generateSequence { getRandomPost() }
    .take(nextInt(0, 50) + 1)
    .toList()

内容的提问来源于stack exchange,提问作者Melio500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:45:03