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
相关产品推荐
相关产品推荐

