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

Kotlin中使用plusElement/plus无法为二维Double数组添加元素

问题解决:Kotlin二维Double数组无法添加元素

问题原因

Kotlin中的Array是不可变固定大小集合,调用plusElement或plus方法不会修改原数组,而是返回一个包含新元素的新数组。你当前的代码仅调用了方法但未接收返回值,同时dataObject被声明为val不可变变量,导致原数组始终为空。

解决方案

推荐使用MutableList来动态添加元素(相比直接使用Array更灵活,适合动态场景),最终可按需转换为Array类型:

修改后的代码

var ageEntry: Int
// 改用可变列表存储元素
val dataObject = mutableListOf<Array<Double>>()
for (dataWeight in it.data!!) {
    ageEntry = dataWeight.date.toLocalDate().getAgeInMonth().toString().toInt()
    // 使用add方法直接添加元素到列表
    dataObject.add(arrayOf(ageEntry.toDouble(), dataWeight.weight.toDouble()))
    Log.d("DATA_SERIES_BARU", "setupViewInstance: ${dataObject.toTypedArray().contentToString()}")
}

// 如果最终需要Array<Array<Double>>类型,执行转换
val finalDataArray = dataObject.toTypedArray()

备选方案(不推荐,效率低)

如果坚持使用Array,需将dataObject改为var,并每次接收plusElement返回的新数组:

var ageEntry: Int
// 改为var变量,允许重新赋值
var dataObject: Array<Array<Double>> = arrayOf()
for (dataWeight in it.data!!) {
    ageEntry = dataWeight.date.toLocalDate().getAgeInMonth().toString().toInt()
    // 将新数组重新赋值给dataObject
    dataObject = dataObject.plusElement(arrayOf(ageEntry.toDouble(), dataWeight.weight.toDouble()))
    Log.d("DATA_SERIES_BARU", "setupViewInstance: ${dataObject.contentToString()}")
}

说明

  • MutableList的add方法会直接修改原集合,无需重新赋值,效率更高
  • 若业务场景必须使用Array,优先考虑第一个方案(先存列表再转数组),避免频繁创建新数组带来的性能损耗

内容的提问来源于stack exchange,提问作者Irgi Ahmad Maulana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:41:59