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


241

とてもシンプルに思えますが、Kotlin MutableListを空に初期化するにはどうすればよいMutableListですか?

この方法でハッキングすることもできますが、もっと簡単な方法があると確信しています。

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

回答:


436

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

val mutableList = mutableListOf<Kolory>()

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

別の方法は

val mutableList : MutableList<Kolory> = arrayListOf()

または

val mutableList : MutableList<Kolory> = ArrayList()

これは、Java型ArrayListMutableListコンパイラトリックを介して暗黙的に型を実装しているという事実を利用しています。


何かをインポートする必要がありますか?これを現在のプロジェクトで書き込むと、未解決の参照arrayListOfが返されます。mutableListOfを試すと同じです
vextorspace

クラスパスにstdlibがありますか?
Kirill Rakhman 2017年

build.gradleのkotlin_versionフラグを1.1.1ではなく1.1.0に戻すだけでした
vextorspace

1
@androiddeveloper kotlin.collections.Listそうでないからですjava.utils.List。Kotlinには、一部の組み込みJava型をマッピングするメカニズムがあります。kotlinlang.org/docs/reference/java-interop.html#mapped-typesおよび同様のSOの質問を参照してください。コメントセクションは、これを詳細に説明するのには適していません。
Kirill Rakhman

1
@Mohanakrrishnaはい、関数は引数の受け渡しをサポートしています。
Kirill Rakhman

17

配列リストの場合、リストのタイプに応じてさまざまな形式:

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

他のリスト型については、直接作成した場合は変更可能であると見なされます。

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

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

リストがすでに変更可能である場合、左側でタイプを繰り返す必要はありません。または、それらを読み取り専用として扱いたい場合のみ、たとえば:

val myList: List<Kolory> = ArrayList()

新しいMutableListのサイズがわかっている場合はどうなりますか?ArrayListの場合、私は次のことを実行できます。ArrayList(24)たとえば、24が適切な出発点であると考える場合、おそらくそれ以上は必要ありません。
Androidデベロッパー

@androiddeveloper基になるリストのリストコンストラクターまたはJava APIのドキュメントを表示すると、必要なオプションが表示されます。
ジェイソンミナード

あなたは忘れていましたmutableListOf。正しいは次のようになりますval myList = arrayListOf<Kolory>() // same as // val myList = mutableListOf<Kolory>()
user924

10

私は以下が好きです:

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))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.