web-dev-qa-db-ja.com

KotlinのMutableListを空のMutableListに初期化するにはどうすればよいですか?

とても単純に思えますが、どうすればKotlinのMutableListを空のMutableListに初期化できますか?

私はこのようにしてそれをハックすることができました、しかし私はもっと簡単に利用できるものがあると確信しています:

var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()
182
ssuukk

あなたは簡単に書くことができます:

val mutableList = mutableListOf<Kolory>()

これが最も慣用的な方法です。

代替方法は

val mutableList : MutableList<Kolory> = arrayListOf()

または

val mutableList : MutableList<Kolory> = ArrayList()

これは、ArrayListのようなJava型がコンパイラトリックによって暗黙的にMutableList型を実装しているという事実を悪用しています。

329
Kirill Rakhman

配列リストのために、リストのタイプに応じて様々な形式:

val myList = mutableListOf<Kolory>() 
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()

LinkedListの場合:

val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()

他のリスト型の場合、それらを直接構築するとMutableと見なされます。

val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()

これはListインターフェース(すなわち他のコレクションライブラリ)を実装するものすべてに当てはまります。

リストがすでにミュータブルである場合は、左側でタイプを繰り返す必要はありません。あるいは、それらを読み取り専用として扱いたい場合に限ります。例えば:

val myList: List<Kolory> = ArrayList()
13
Jayson Minard

私は以下のようにします:

var book: MutableList<Books> = mutableListOf()

/ **与えられた要素を持つ新しい[MutableList]を返します。 * /

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))
6
Chang