Kotlin如何创建任意大小集合?数组、列表、映射等实现方式
Kotlin 创建任意大小/动态生成集合的方法
下面针对数组、列表、映射、集合四种常用类型,分别说明如何创建任意大小或动态生成的实例:
数组(Array)
- 固定大小、统一初始值:使用
Array(size) { 初始化逻辑 }语法。比如创建大小为N、元素全为0的数组:
初始化lambda的参数val N = 10 val zeroArray = Array(N) { 0 }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
相关产品推荐
相关产品推荐

