KotlinにはList<out E>
コレクションがあり、コレクションを初期化するさまざまな方法について考えていました。Javaでは、次のように書くことができます。
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlinで同じことを実現するにはどうすればよいですか?
KotlinにはList<out E>
コレクションがあり、コレクションを初期化するさまざまな方法について考えていました。Javaでは、次のように書くことができます。
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Kotlinで同じことを実現するにはどうすればよいですか?
回答:
listOf
救助するトップレベルの機能:
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>
であるため、変更可能であると想定するべきではありません。
Ilyaとgmariottiによる賛成の回答はどちらも正しく、正しいものです。ただし、いくつかの代替案はコメントで広められており、いくつかはまったく言及されていません。
この回答には、すでに与えられているものの要約と、説明および他のいくつかの選択肢が含まれています。
List
)不変または読み取り専用リストは、要素を追加または削除できないリストです。
listOf()
しばしばあなたが望むことをします。これにより、次のような不変のリストが作成されます。Arrays.asList
Javaのれます。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
このようにして、Kotlinでリストを初期化できます
val alphabates : List<String> = listOf("a", "b", "c")
listOf
?