如何获得Kotlin中两个列表中所有元素的总和?
在Kotlin我有两个列表:
val x: List = listOf(1,2,3,4,5,6) val y: List = listOf(2,3,4,5,6,7)
如何得到:
val z: List = 3,5,7,9,11,13
不使用循环?
假设这两个列表具有相同的大小 :
-
使用
zip
val sum = x.zip(y) { xv, yv -> xv + yv }
-
使用简单的
map
和mapIndexed
val sum = (0 until x.size).map { x[it] + y[it] } // or val sum = x.mapIndexed { index, xv -> xv + y[index] }
当大小可以不同 ,你会假设0超出范围条目:
-
使用
array
val sum = IntArray(maxOf(x.size, y.size)) { x.getOrElse(it, {0}) + y.getOrElse(it, {0}) }.toList()
-
使用范围:
val sum = (0 until maxOf(x.size, y.size)).map { x.getOrElse(it, {0}) + y.getOrElse(it, {0}) }
-
将列表扩展为相同的大小
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 }
我会去一个范围和map
:
val sums = (0 until x.size).map { x[it] + y[it] }
这可能比zip
更少。