どうも。どっことです。今回はKotlinによる実装で、Collections
派生の要素をシャッフルする実装について解説します。
Collectionsの要素をシャッフルする時の実装
Javaでいう所の以下のメソッドのことです。
Collections.shuffle(List)
Kotlinでは、以下のように実装します。
// シャッフル対象となるList
var mutableList = mutableListOf<Any>()
Collections.shuffle(mutableList)
ポイントはシャッフルするCollectionsがMutable
である点です。
Kotlinでは同じCollectionsでも、要素を加工できるMutable
という概念があります。要素が加工できるCollectionsは、クラス名の接頭語にMutable
が付与されています(MutableList
, MutableHashMap
など)。逆に要素を加工できないものはMutable
が付与されていません。そのため、Kotlinに慣れていないJavaユーザがいざListなどのインスタンスを作っても「要素の追加や削除ができない...」といったトラブルが発生しがちです。
上記の経緯から、シャッフル対象のCollectionsはMutable
にする必要があります。という話でした。
まとめ
今回はCollections派生の要素をシャッフルする実装について解説しました。JavaユーザがKotlinに移行するときのすごくよくあるハマりポイントだと思うので、ぜひ参考にしてくださいね。