-1

是否有现成的解决方案通过交替两个列表中的元素来创建列表。我了解如何使用循环和条件来完成此操作,但也许有一个现成的扩展可以让您简洁地解决问题

4

1 回答 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 回答