如何在同一个数组中复制数组x次?

时间:2018-02-21 16:47:45

标签: arrays list kotlin

所以,我已经创建了返回publicKey的函数,我需要将它复制x次以供以后使用。 例如:publicKey: [76, 152, 93, 102, 145, 181]我需要将其复制3次,因此最终结果应为[76, 152, 93, 102, 145, 181, 76, 152, 93, 102, 145, 181, 76, 152, 93, 102, 145, 181]。 我尝试过使用var list3 = publicKey * x,但是你可以想象,它没有用。

fun getPublicKey(privateKey: ArrayList<BigInteger>, 
                 birthDay: BigInteger, 
                 primNumb: BigInteger): ArrayList<BigInteger> {
    val inversMod = birthDay.modInverse(primNumb)
    //println(inversMod)
    val publicKey: ArrayList<BigInteger> = ArrayList()
    for (keyValue in privateKey){
        val pagaiduValue = (keyValue * inversMod).mod(primNumb)
        //println("($keyValue * $inversMod) mod $primNumb = $pagaiduValue")
        publicKey.add(pagaiduValue)
    }
    return publicKey 
}

1 个答案:

答案 0 :(得分:3)

这是一个简短而简单的解决方案:

inline fun <T> Iterable<T>.times(count: Int) = (1..count).flatMap { this }

可以像这样使用:

val numbers = listOf(1, 2, 3)
val result = numbers.times(5)
println(result)                 // [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

也许命名可以使用一些工作,times也可以假设具有将每个元素乘以给定数字的效果,repeat可能是更好的选择。此外,您可能希望在Array<T>和原始数组类型(IntArray等)上定义它。