1. ホーム
  2. kotlin

[解決済み] KotlinのArrayList<String>()とmutableListOf<String>()の相違点

2022-06-24 22:11:01

疑問点

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 ).