KotlinでList <T>を初期化する方法は?


83

KotlinにはList<out E>コレクションがあり、コレクションを初期化するさまざまな方法について考えていました。Javaでは、次のように書くことができます。

List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");

Kotlinで同じことを実現するにはどうすればよいですか?


10
listOf
マイケル

回答:


133

listOf 救助するトップレベルの機能:

val geeks = listOf("Fowler", "Beck", "Evans")

11
パラメータを指定せずにlistOfを呼び出すと、空のリストが表示されるか、emptyListを呼び出すだけで読みやすくなります。
frogcoder 2016年

4
ありますarrayListOf
グレッグT

後で変更するために変更可能ですか?
IgorGanapolsky

1
@IgorGanapolsky返される型は読み取り専用List<T>であるため、変更可能であると想定するべきではありません。
イリヤ

16

Ilyagmariottiによる賛成の回答はどちらも正しく、正しいものです。ただし、いくつかの代替案はコメントで広められており、いくつかはまったく言及されていません。

この回答には、すでに与えられているものの要約と、説明および他のいくつかの選択肢が含まれています。

不変リスト(List

不変または読み取り専用リストは、要素を追加または削除できないリストです。

  • イリヤが指摘するように、listOf()しばしばあなたが望むことをします。これにより、次のような不変のリストが作成されます。Arrays.asList Javaのれます。
  • 以下のようfrogcoderコメント内の状態、emptyList()同じことを行いますが、自然に空のリストを返します。
  • listOfNotNull()すべてのnull要素を除外した不変のリストを返します。

可変リスト(MutableList

可変リストには、要素を追加または削除できます。

  • gmariottiはmutableListOf()、を使用することをお勧めします。これは通常、リストから要素を追加または削除する必要がある場合に必要なものです。
  • グレッグTは代替案を提供しarrayListOf()ます。これにより、可変が作成されますArrayList。本当にArrayList実装が必要な場合は、これを使用してくださいmutableListOf()
  • List便利な関数を持たない他の実装の場合、たとえば、のように初期化できますval list = LinkedList<String>()。つまり、コンストラクターを呼び出してオブジェクトを作成するだけです。これは、たとえばLinkedList実装が本当に必要な場合にのみ使用してください。

13

ただ、より多くの情報を追加するため、Kotlinは両方の不変を提供していますListし、MutableListそれがで初期化することが可能listOfmutableListOf。あなたがコレクションについて何Kotlinの提供、より興味があるなら、あなたは、公式のリファレンスドキュメントに行くことができますコレクション


8

いくつかのユースケースを説明しましょう:初期化アイテムを使用して不変(変更不可)リストを作成しましょう:

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 

1

このようにして、Kotlinでリストを初期化できます

val alphabates : List<String> = listOf("a", "b", "c")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.