首页 > 解决方案 > 如何在 Kotlin 中并行迭代两个列表?

问题描述

如何在 Kotlin 中迭代两个列表?我想将一个列表中的每个值分配给textview另一个列表中的等价物,例如 1 : 1 分配。

类似下面的东西允许并行迭代,但它会被执行两次:

data class Total(val area : Double)

private fun assign(
    allArea: List<Double>, allTextViews : List<TextView>
) : Total {
    var totalArea = 0.0

    allArea.forEach { double ->
        val value : Double = double
        totalArea += value

        allTextViews.forEach { textView ->
            textView.text = value.toString()
        }
    }
    return Total(totalArea)
}

assign(allStates = listOf(
        a,
        b
    ),
    allTextViews = listOf(
        textView1,
        textView2)
)

标签: listkotlin

解决方案


尝试压缩两个列表:

fun main() {
    val list1 = listOf(1,2,3)
    val list2 = listOf(4,5,6)
    list1.zip(list2).forEach {pair -> 
       println(pair.component1() + pair.component2())
    }
}

这打印:

5
7
9

在您的情况下,给定allArea列表并allTextViews具有相同的长度,您可以压缩它们并获取第一个组件将是 type 的Double对,第二个是 typeTextView


推荐阅读