如何获得Kotlin中两个列表的所有元素的总和?

Pau*_*ulB 5 kotlin

在Kotlin我有两个列表:

val x: List<Int> = listOf(1,2,3,4,5,6)
val y: List<Int> = listOf(2,3,4,5,6,7)
Run Code Online (Sandbox Code Playgroud)

如何得到:

val z: List<Int> = 3,5,7,9,11,13
Run Code Online (Sandbox Code Playgroud)

没有使用循环?

mie*_*sol 13

假设两个列表具有相同的大小:

  1. 运用 zip

    val sum = x.zip(y) { xv, yv -> xv + yv }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用简单mapmapIndexed

    val sum = (0 until x.size).map { x[it] + y[it] }
    // or
    val sum = x.mapIndexed { index, xv -> xv + y[index] }
    
    Run Code Online (Sandbox Code Playgroud)

当大小可以不同时,如果超出范围条目,则假设为0:

  1. 用一个 array

    val sum = IntArray(maxOf(x.size, y.size)) { 
        x.getOrElse(it, {0}) + y.getOrElse(it, {0}) 
    }.toList()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用范围:

    val sum = (0 until maxOf(x.size, y.size)).map { 
        x.getOrElse(it, {0}) + y.getOrElse(it, {0})
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将列表扩展到相同的大小

    val xExtended = x + Array(maxOf(0, y.size - x.size), { 0 })
    val yExtended = y + Array(maxOf(0, x.size - y.size), { 0 })
    val sum = xExtended.zip(yExtended) { xv, yv -> xv + yv }
    
    Run Code Online (Sandbox Code Playgroud)