【发布时间】:2021-03-21 22:48:31
【问题描述】:
是否有现成的解决方案可以通过交替两个列表中的元素来创建列表。我了解如何使用循环和条件来完成此操作,但也许有一个现成的扩展可以让您简洁地解决问题
【问题讨论】:
标签: arrays kotlin array-merge alternating
是否有现成的解决方案可以通过交替两个列表中的元素来创建列表。我了解如何使用循环和条件来完成此操作,但也许有一个现成的扩展可以让您简洁地解决问题
【问题讨论】:
标签: arrays kotlin array-merge alternating
您可以使用 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
}
【讨论】: