是否有现成的解决方案通过交替两个列表中的元素来创建列表。我了解如何使用循环和条件来完成此操作,但也许有一个现成的扩展可以让您简洁地解决问题
问问题
822 次
1 回答
2
您可以使用 zip 和 flatMap 结果。
val list1 = listOf(1, 2, 3)
val list2 = listOf(4, 5, 6)
val result = list1.zip(list2).flatMap { pair -> listOf(pair.first, pair.second) }
请注意,此解决方案为每对执行额外的内存分配,因此我的建议仍然是实现您自己的版本。
fun <T> List<T>.mix(other: List<T>): List<T> {
val first = iterator()
val second = other.iterator()
val list = ArrayList<T>(minOf(this.size, other.size))
while (first.hasNext() && second.hasNext()) {
list.add(first.next())
list.add(second.next())
}
return list
}
于 2021-03-21T23:02:37.590 回答