You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何实现数组的无重复随机遍历?

Kotlin中如何实现数组的无重复随机遍历?

嘿,这个问题Kotlin标准库其实已经给你准备好了简洁的解决方案,完全不用自己写一堆条件判断来避免重复~

方法一:直接打乱数组后遍历

Kotlin的集合/数组扩展函数 shuffled() 可以直接帮你生成一个原元素的随机排列集合,里面的元素不会重复,直接遍历这个打乱后的集合就可以实现需求:

fun main() {
    val storage = arrayOf("This ", "Is ", "How ", "To ", "Create ", "Array ", "In ", "Kotlin ")
    // 生成原数组的随机排列副本
    val shuffledStorage = storage.shuffled()
    // 遍历打乱后的集合,每个元素只会出现一次
    shuffledStorage.forEach { print(it) }
    println()
}

这个方法的优势是代码极简,shuffled() 内部已经帮你处理了随机不重复的逻辑,不需要自己维护已访问元素的记录。

方法二:打乱索引后遍历原数组

如果你不想创建新的数组副本,也可以通过打乱索引的方式来实现,这样可以保留原数组的顺序,只是随机访问其中的元素:

fun main() {
    val storage = arrayOf("This ", "Is ", "How ", "To ", "Create ", "Array ", "In ", "Kotlin ")
    // 生成数组所有索引的随机排列
    val shuffledIndices = storage.indices.shuffled()
    // 根据打乱后的索引访问原数组元素
    shuffledIndices.forEach { print(storage[it]) }
    println()
}

这种方式适合需要保留原数组结构,只是需要随机无重复访问元素的场景,同样利用标准库的能力,比自己写循环+去重判断要高效得多。

总结一下:完全不用自己写复杂的条件判断,Kotlin已经提供了开箱即用的方法来实现你的需求,上面两种方式都是非常地道的Kotlin写法哦~

备注:内容来源于stack exchange,提问作者Dreamer X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:44:27