为什么我不能在科特林合并两个列表

时间:2019-09-03 07:45:26

标签: kotlin

我正在阅读有关kotlin的anotonio leava书 有一个名为“合并”的功能,它可以相互合并两个列表 这是作者在他的书中写的代码:

val list = listOf(1,2,3,4,5,6)

val anotherlist = listOf(7,8,9,10,11,12)

assertEquals(listOf(8,10,12,14,16,18),list.merge(anotherlist){it1,it2 - > it1+it2})

这意味着合并将两个列表加在一起 但是当我自己写代码时 我的想法是intelij不知道func名称 它不起作用 你能帮助我吗 对不起,因为我的英语

3 个答案:

答案 0 :(得分:1)

您可以使用地图

   val x: List<Int> = listOf(1,2,3,4,5,6)
    val y: List<Int> = listOf(2,3,4,5,6,7)
    val sums = (x.indices).map { x[it] + y[it] }

输出

[3, 5, 7, 9, 11, 13]

答案 1 :(得分:1)

您可以使用zip函数来代替地图

fun main(args: Array<String>) {

    val list1 = listOf(4, 5, 6)
    val list2 = listOf(1, 2, 3)

    val result = list1.zip(list2) { e1, e2 -> e1 + e2 }
    println(result) // prints [5, 7, 9]
}

答案 2 :(得分:0)

merge既不是List的成员函数,也不是kotlin标准库提供扩展功能。但是您可以自己定义一个(我怀疑这是作者所做的)

fun <E> List<E>.merge(anotherlist: List<E>, operation: (E, E) -> E): List<E> {
    // you probably want to check cardinalities of the two lists
    return indices.map { operation(this[it], anotherlist[it]) }
}