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

Kotlin如何创建任意大小集合?数组、列表、映射等实现方式

Kotlin 创建任意大小/动态生成集合的方法

下面针对数组、列表、映射、集合四种常用类型,分别说明如何创建任意大小或动态生成的实例:

数组(Array)

  • 固定大小、统一初始值:使用Array(size) { 初始化逻辑 }语法。比如创建大小为N、元素全为0的数组:
    val N = 10
    val zeroArray = Array(N) { 0 }
    
    初始化lambda的参数it是当前元素的索引,也可以用来生成动态元素,比如:
    val indexedArray = Array(5) { it * 2 } // 生成 [0, 2, 4, 6, 8]
    
  • 基本类型专用数组(无装箱开销):如果是Int、Double等基本类型,推荐用IntArray、DoubleArray等专用类,用法一致:
    val intZeroArray = IntArray(N) { 0 }
    

列表(List)

  • 不可变列表:用List(size) { 初始化逻辑 },和数组语法类似:
    val zeroList = List(N) { 0 }
    val stringList = List(3) { "第${it+1}项" } // 生成 ["第1项", "第2项", "第3项"]
    
  • 可变列表(MutableList):如果需要后续修改元素,直接用MutableList(size) { 初始化逻辑 }:
    val mutableZeroList = MutableList(N) { 0 }
    mutableZeroList[0] = 100 // 支持修改操作
    

映射(Map)

  • 基于键范围生成映射:直接用范围表达式配合associate函数,完美匹配你提到的key -> someFunctionOfKey(key)场景:
    // 键从1到5,值为键的平方
    val squareMap = (1..5).associate { it to it * it }
    // 结果:{1=1, 2=4, 3=9, 4=16, 5=25}
    
  • 自定义键集或更复杂逻辑:用buildMap构建更灵活的映射,比如生成N个键值对:
    val customMap = buildMap<String, Int> {
        repeat(N) { index ->
            put("Key$index", index * 10)
        }
    }
    
  • 可变映射:用MutableMap的apply扩展或者buildMap时指定可变类型:
    val mutableMap = mutableMapOf<String, Int>().apply {
        (0 until N).forEach { put("Key$it", it) }
    }
    

集合(Set)

  • 不可变Set:可以先生成列表再转成Set,或者用buildSet:
    // 生成包含0到N-1的Set
    val numberSet = (0 until N).toSet()
    // 自定义元素逻辑
    val customSet = buildSet {
        repeat(N) { add(it * 3) }
    }
    
  • 可变MutableSet:直接初始化可变Set并添加元素,或者用buildSet:
    val mutableSet = mutableSetOf<Int>().apply {
        repeat(N) { add(it) }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:09