如何在 Kotlin 中打乱可变列表的元素?

EMa*_*ual 4 kotlin

我想创建一个MutableList字母表,然后将它们洗牌并将其存储在另一个MutableList.

我使用了shuffle()函数,但它导致原始列表也被打乱,我不想发生这种情况,因为我将使用原始列表将它与新的打乱列表映射。

fun main(){

    val alphabets = ('A'..'Z').toMutableList()
    
    var shuffAlp = alphabets
    shuffAlp.shuffle()

    println(alphabets)
    println(shuffAlp)
}
Run Code Online (Sandbox Code Playgroud)

所以我不得不创建两个可变列表,然后对其中一个进行洗牌

val alphabets = ('A'..'Z').toMutableList()
var shuffAlp = ('A'..'Z').toMutableList()
shuffAlp.shuffle()
Run Code Online (Sandbox Code Playgroud)

这可能是一个微不足道的问题,但是有没有其他方法可以让我不必创建两个相同的列表?

Ani*_*ahu 5

shuffle确实会洗牌到原始列表中,洗牌后会返回新列表。

同样的行为适用于sort & sortedsortBy & sortedByreverse & asReversed

fun main(){
    val alphabets = ('A'..'Z').toMutableList()
    val shuffAlp = alphabets.shuffled()

    println(alphabets)
    println(shuffAlp)
}
Run Code Online (Sandbox Code Playgroud)

结果:

[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
[U, B, A, N, H, R, O, K, X, C, W, E, Q, P, J, Z, L, Y, S, M, I, D, V, F, G, T]
Run Code Online (Sandbox Code Playgroud)