如何在 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)
)
Run Code Online (Sandbox Code Playgroud)
Pay*_*yam 11
这是最“函数式编程”的方式:
fun main() {
val listA = listOf(10, 20, 30)
val listB = listOf(1,2,3)
listA.zip(listB) { a, b -> println(a + b) }
}
Run Code Online (Sandbox Code Playgroud)
尝试压缩两个列表:
fun main() {
val list1 = listOf(1,2,3)
val list2 = listOf(4,5,6)
list1.zip(list2).forEach {pair ->
println(pair.component1() + pair.component2())
}
}
Run Code Online (Sandbox Code Playgroud)
这打印:
5
7
9
Run Code Online (Sandbox Code Playgroud)
在给定allArea
列表并allTextViews
具有相同长度的情况下,您可以压缩它们并获得第一个组件的类型为 type Double
,第二个组件为 type 的对TextView
归档时间: |
|
查看次数: |
2813 次 |
最近记录: |