Kotlin:遍历集合中的每一对(或通常固定大小的子集)

标签 kotlin iterator set subset pairwise

是否有一种简短/惯用的方法来迭代集合中的每一对元素?
更好的方法是遍历集合的所有固定基数子集。
经典而丑陋的方法是:

val s = setOf(1, 2, 3, 4)

for (i in s) {
    for (j in s) {
        if (i != j) {
            println("$i $j")
        }
    }
}
对于更大的子集,需要更多的循环,因此这是不可扩展的。

最佳答案

这在技术上也是 O(n^2),但迭代次数会少一半:(n^2 - n) / 2

val l = s.toList()
for (i in s.indices) {
    for (j in i + 1 until s.size) {
        println("${l[i]}, ${l[j]}")
        println("${l[j]}, ${l[i]}")
    }
}

关于Kotlin:遍历集合中的每一对(或通常固定大小的子集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62593231/

相关文章:

带有 Kotlin 的 Android - 将数据传回上一个 Activity

python - 从两个集合的字典中的另一个集合中删除给定元素

c++ - 我如何替换集合中的元素?

android - HttpLoggingInterceptor 不使用改造 2 记录

kotlin - 无法从 kotlin jacoco 测试覆盖率中排除生成的类

android - Kotlin 中 SearchView 的过滤器

c++ - 在 C++ 中使用 lambda 的简单自定义迭代器

java - 在 Java 中遍历 ArrayList 的 ArrayList

python - 读取csv数据时pythoncode中的StopIteration错误

java - 如何将 Set<String> 转换为 Set<Object>