在 Kotlin 中将列表中的项目彼此配对

Hus*_*ain 4 kotlin

我想将列表中的项目彼此配对

例子

list("A","B","C") to -> list(Pair(A,B),Pair(A,C),Pair(B,C))

list("A","B","C","D") to -> list(Pair(A,B),Pair(A,C),Pair(A,D),Pair(B,C),Pair(B,D),Pair(C,D))
Run Code Online (Sandbox Code Playgroud)

我尝试过使用zipWithNext,但它对我的事业没有帮助。如果有人可以告诉我如何实现这一目标?

deH*_*aar 5

您可以简单地嵌套for循环并使用范围:

fun permute(list: List<String>): List<Pair<String, String>> {
    var result: MutableList<Pair<String, String>> = mutableListOf()

    for (i in 0..(list.size - 1)) {
        val s = list.get(i)

        for (j in (i + 1)..(list.size - 1)) {
            val p = Pair(s, list.get(j))
            result.add(p)
        }
    }

    return result
}
Run Code Online (Sandbox Code Playgroud)

可能有更多 Kotlin 风格的方法,但我目前不知道......

fun main()在这样的情况下使用这个方法

fun main() {
    val list = listOf("A", "B", "C", "D")

    println(permute(list))
}
Run Code Online (Sandbox Code Playgroud)

将输出

fun permute(list: List<String>): List<Pair<String, String>> {
    var result: MutableList<Pair<String, String>> = mutableListOf()

    for (i in 0..(list.size - 1)) {
        val s = list.get(i)

        for (j in (i + 1)..(list.size - 1)) {
            val p = Pair(s, list.get(j))
            result.add(p)
        }
    }

    return result
}
Run Code Online (Sandbox Code Playgroud)