【问题标题】:Kotlin - Concatenate values of multi-dimensional arraysKotlin - 连接多维数组的值
【发布时间】:2019-05-17 20:20:46
【问题描述】:

我对 Kotlin 中的多维数组有疑问。 如何以通用方式获得以下结果:

val array1 = arrayOf(
                arrayOf(1, 2, 3, 4),
                arrayOf(5, 6, 7, 8),
                arrayOf(9, 10, 11, 12)
             )

val array2 = arrayOf(
                arrayOf(11, 12, 13, 14),
                arrayOf(15, 16, 17, 18),
                arrayOf(19, 20, 21, 22)
             )

val array3 = arrayOf(
                arrayOf(21, 22, 23, 24),
                arrayOf(25, 26, 27, 28),
                arrayOf(29, 30, 31, 32)
             )

将array1、array2、array3的值(在列和行)连接到一个相同大小的数组中:

result[0][0] = [array1[0][0], array2[0][0], array3[0][0]]
result[0][1] = [array1[0][1], array2[0][1], array3[0][1]]
result[2][0] = [array1[2][0], array2[2][0], array3[2][0]]

....

result = [
    [1, 11, 21], [2, 12, 22], [3, 13, 23], [4, 14, 24],
    [5, 15, 25], [6, 16, 26], [7, 17, 27], [8, 18, 28],
    [9, 19, 29], [10, 20, 30], [11, 21, 31], [12, 22, 32]
]

谢谢!

【问题讨论】:

  • 也许在循环中转置元素?

标签: arrays kotlin


【解决方案1】:

你可以这样做。请注意,这假设所有数组和子数组的大小相同。

val array1 = arrayOf(
        arrayOf(1, 2, 3, 4),
        arrayOf(5, 6, 7, 8),
        arrayOf(9, 10, 11, 12)
)

val array2 = arrayOf(
        arrayOf(11, 12, 13, 14),
        arrayOf(15, 16, 17, 18),
        arrayOf(19, 20, 21, 22)
)

val array3 = arrayOf(
        arrayOf(21, 22, 23, 24),
        arrayOf(25, 26, 27, 28),
        arrayOf(29, 30, 31, 32)
)
val arrays = arrayOf(array1, array2, array3)

val arrayLength = array1.size
val subArrayLength = array1[0].size 
val result = Array(arrayLength * subArrayLength) { index ->
    arrays.map{ it[index / subArrayLength][index % subArrayLength] }.toTypedArray()
}

【讨论】:

    【解决方案2】:

    您可以使用flatten()

    val result = arrayOf(array1, array2, array3).flatten().toTypedArray()
    

    由于flatten返回一个列表,你可以调用toTypedArray()来获取数组形式的结果。这是更惯用的方式。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多