private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
どちらも変更可能なリストですが、 または という 2 つのキーワードの意味は何でしょうmutableListOf
かArrayList
?
それとも大きな違いがあるのでしょうか?
ベストアンサー1
両者の唯一の違いは、意図を伝えることです。
と書くとval a = mutableListOf()
、「変更可能なリストが欲しいが、実装については特に気にしない」と言っていることになります。 代わりに、 と書くと、val a = ArrayList()
「具体的には が欲しいArrayList
」と言っていることになります。
実際には、JVM にコンパイルされる Kotlin の現在の実装では、 を呼び出すとmutableListOf
が生成されArrayList
、動作に違いはありません。リストが構築されると、すべてが同じように動作します。
さて、Kotlin の将来のバージョンでは、mutableListOf
異なるタイプのリストを返すように変更されたとします。
おそらく、Kotlin チームは、新しい実装がほとんどのユースケースでより適切に機能すると判断した場合にのみ、その変更を行います。そうすれば、mutableListOf
新しいリスト実装を透過的に使用でき、より優れた動作を無料で得ることができます。mutableListOf
それがあなたのケースに当てはまる場合は、 を選択してください。
一方、あなたは自分の問題について長い時間をかけて考え、ArrayList
本当にが問題に最も適しており、最適ではないものに移行するリスクを冒したくない場合は、 をArrayList
直接使用するか、arrayListOf
ファクトリ関数 (ArrayList
の 固有の類似物mutableListOf
) を使用することをお勧めします。