[解決済み] KotlinのArrayList<String>()とmutableListOf<String>()の相違点
疑問点
private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
どちらもmutableなリストですが、では、2つのキーワード
mutableListOf
あるいは
ArrayList
?
とか、大きな違いはあるのでしょうか?
どのように解決するのですか?
両者の違いは、意図を伝えるかどうかだけです。
と書くと
val a = mutableListOf()
と書くと、quot;私はミュータブルリストが欲しいのであって、実装は特に気にしない"と言っているようなものです。と書くと、代わりに
val a = ArrayList()
と書くと、あなたは "私は特に
ArrayList
ということです。
実際のところ、JVMにコンパイルするKotlinの現在の実装では、JVMにコンパイルするために
mutableListOf
を呼び出すと
ArrayList
を生成し、動作に違いはありません。一旦リストが構築されると、すべてが同じように動作します。
では、将来のKotlinのバージョンで
mutableListOf
が異なるタイプのリストを返すように変更されたとします。
Kotlinチームは、新しい実装がほとんどのユースケースでよりよく機能すると判断した場合にのみ、その変更を行うでしょう。
mutableListOf
は、その新しいリスト実装を透過的に使用させ、より良い動作を無料で手に入れることができます。次のように
mutableListOf
を使うようにしましょう。
一方、あなたが自分の問題について考えるのに多くの時間を費やして、次のように考えたかもしれません。
ArrayList
本当に
があなたの問題に最も適しており、最適でないものに移行させられるリスクは避けたいと思うでしょう。その場合、おそらく
ArrayList
を直接使うか、あるいは
arrayListOf
ファクトリ関数 (つまり
ArrayList
-に対する特定のアナログ
mutableListOf
).
関連
-
[解決済み] Kotlin : インタフェース Queue のコンストラクタがない。
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み] const "と "val "の違いは何ですか?
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】KotlinのList型とArray型の違いについて
-
[解決済み] Kotlinのトライウィズリソース
-
[解決済み] Kotlinのジェネリックにおける "*"と "Any "の違いについて
-
[解決済み] if式でのBoolean?の使用
-
[解決済み] Kotlinで'by'キーワードは何をするのですか?
-
[解決済み] MutableLiveData。コルーチンからバックグラウンドスレッドでsetValueを実行できない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Kotlinの静的メソッドと変数
-
[解決済み] Kotlinのメンバー宣言に期待する
-
[解決済み] Kotlinの「?:」は何をするのか?(エルビス演算子)
-
[解決済み] lateinit "変数が初期化されたかどうかを確認する方法は?
-
[解決済み】KotlinのListに "add"、"remove "がない、Mapに "put "がないなど?
-
[解決済み】「不適切なブロッキングメソッドの呼び出し」を適切にする方法は?
-
[解決済み] Kotlinのトライウィズリソース
-
[解決済み] の警告を表示します。クラスパスのKotlinランタイムJARファイルは同じバージョンでなければならない
-
[解決済み] Kotlinでリソースからテキストファイルを読み込むには?
-
[解決済み] MutableLiveData。コルーチンからバックグラウンドスレッドでsetValueを実行できない