【问题标题】:Kotlin. Merge two list with alternating values [duplicate]科特林。合并两个具有交替值的列表[重复]
【发布时间】:2021-03-21 22:48:31
【问题描述】:

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

【问题讨论】:

    标签: arrays kotlin array-merge alternating


    【解决方案1】:

    您可以使用 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
    }
    

    【讨论】:

    • 感谢您的回答。但是如果数组的长度不同,则不会在结果数组中添加一个元素。
    • 该问题仅要求“交替元素”的库函数,并没有指定当有额外元素时要做什么。这个答案回答了 IMO 提出的问题。
    猜你喜欢
    • 2018-04-14
    • 1970-01-01
    • 2021-10-29
    • 2015-03-07
    • 2022-01-09
    • 2012-04-17
    • 2021-05-09
    相关资源
    最近更新 更多