ラベル Collections の投稿を表示しています。 すべての投稿を表示
ラベル Collections の投稿を表示しています。 すべての投稿を表示

2022年8月20日土曜日

Kotlin Collectionsをシャッフルするときの実装について解説

どうも。どっことです。今回は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に移行するときのすごくよくあるハマりポイントだと思うので、ぜひ参考にしてくださいね。

移行予定

どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。