Kotlinには List<out E>
コレクションがありますが、これを初期化する方法がわかりません。 Javaでは、次のように書くことができます。
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlinで同じことをどのように達成できますか?
listOf
救助のためのトップレベル関数:
val geeks = listOf("Fowler", "Beck", "Evans")
さらに情報を追加するために、KotlinはList
とMutableList
で初期化できる不変のlistOf
とmutableListOf
の両方を提供します。コレクションに関してKotlinが提供するものに興味がある場合は、 Collections の公式リファレンスドキュメントにアクセスできます。
Ilya と gmariotti による賛成の回答はどちらも適切で正しいです。しかし、いくつかの代替案はコメントで広がっており、いくつかはまったく言及されていません。
この回答には、すでに説明されているものの概要と、明確化およびその他のいくつかの選択肢が含まれています。
List
)不変リスト、または読み取り専用リストは、要素を追加または削除できないリストです。
listOf()
はあなたが望むことをしばしばします。これにより、Javaの Arrays.asList
と同様の不変リストが作成されます。emptyList()
は同じことをしますが、当然空のリストを返します。listOfNotNull()
は、すべてのnull
要素を除外した不変リストを返します。MutableList
)可変リストには、要素を追加または削除できます。
mutableListOf()
を使用することをお勧めします。これは通常、リストに要素を追加または削除する必要がある場合に必要なものです。arrayListOf()
。これにより、変更可能な ArrayList
が作成されます。本当にArrayList
の実装が必要な場合は、mutableListOf()
でこれを使用してください。List
実装では、便利な関数はありません。たとえば、val list = LinkedList<String>()
として初期化できます。それは、コンストラクターを呼び出してオブジェクトを作成するだけです。これは、たとえば LinkedList
の実装が本当に必要な場合にのみ使用してください。いくつかのユースケースを説明しましょう:アイテムを初期化する不変(変更不可)リストを作成しましょう:
val myList = listOf("one" , "two" , "three")
フィールドを初期化する可変(変更可能)リストを作成しましょう:
val myList = mutableListOf("one" , "two" , "three")
不変(変更不可)を宣言して、インスタンス化しましょう:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
最後に、それぞれにいくつかの追加項目を追加します。
val myList = listOf("one" , "two" , "three")
myList.add() //Unresolved reference : add, no add method here as it is non mutable
val myMutableList = mutableListOf("one" , "two" , "three")
myMutableList.add("four") // it's ok