如何在 kotlin 中将列表转换为数组

How to transform a list to an array in kotlin

我有一个列表

val rewardList: List<Reward>
class Reward(
    val nameBefore: String
    
    val amountBefore: Long
)

我想要

val rewardArray: Array<TransReward>
class TransReward(
    val nameAfter: String
    
    val amountAfter: Long
)

涉及name mapping,我想不出将list更改为array的好方法。

P.S。 class 设计是系统中的旧代码,因此我无法更改它。

要将 List 转换为 Array,您可以使用 .toTypedArray(),但在您的情况下,您不能将 List<Reward> 转换为 Array<TransReward>,因为 class类型不同

我的解决办法是先把你的Reward改成TransReward,然后再用.toTypedArray()

val rewardList: List<Reward>
class Reward(
    val nameBefore: String
    
    val amountBefore: Long
){
  fun toTransReward(): TransReward = TransReward(
     nameAfter = this.nameBefore,
     amountAfter = this.amountBefore
  )
}

// use it like this
val rewardArray : Array<TransReward> = rewardList.map{ it.toTransReward() }.toTypedArray()