如何在Kotlin lambda中获取集合值



我有两个集合:A和b,它们都由等量的字符组成。我拉上拉链。然后我需要对相同的元素进行计数,比如A和A。我需要编写一个谓词,但是我找不到从压缩集合中获取这两个元素的方法。我试过这样做:

val num = A.zip(B).count { it.i: Int, it.j:Int -> it.i == it.j}

:

val num = A.zip(guess).count { it[0] == it[2] }

但是它不起作用。我如何从这些字符子列表中到达两个元素?我查看了Kotlin的官方示例,但只有简单的示例:

val evenCount = numbers.count { it % 2 == 0 }

为了在使用.count时解构.zip给出的结果Pair,您需要将"解构"括号。

a.zip(b).count { (aElement, bElement) -> aElemant == bElement }

你也可以忽略它,直接访问它

a.zip(b).count { it.first == it.second } 

如果您想要计算两个列表中的元素对,那么您就非常接近了。通过调用zip,您将获得Pair。您可以通过访问firstsecond部分并查看它们是否匹配(使用==)来计数Pair对象的结果列表。

// Assumptions...
val a = listOf("A", "B", "D")
val b = listOf("A", "B", "C")
// Count where both elements of the zipped pair match
return a.zip(b).count { it.first == it.second }

最新更新