kotlinで空の配列を作成するにはどうすればよいですか?


93

私はArray(0, {i -> ""})現在使用していますが、次のようなより良い実装があるかどうか知りたいですArray()

さらに、を使用しているarrayOfNulls<String>(0) as Array<String>場合、コンパイラはこのキャストが成功しないことを警告します。ただし、これは内のデフォルトの実装Array(0, {i -> ""})です。私は何かが恋しいですか?


stackoverflow.com/questions/33583235/…-コメントの1つは、警告がバグであることを示唆しています
Duncan McGregor

回答:


128

最近(2015年6月)現在、Kotlin標準ライブラリ関数があります

public fun <T> arrayOf(vararg t: T): Array<T>

したがって、文字列の空の配列を作成するには、次のように記述できます。

val emptyStringArray = arrayOf<String>()

2
のような型付き配列はIntArrayどうですか?現在使用arrayOf<Int>().toIntArray()していますが、もっと良い方法はありますか?
csharpfolk 2017年

5
これらの方法の目的は何ですか?サイズを割り当てることができないため、値を割り当てたり取得したりすることはできません。array [0]はjava.lang.ArrayIndexOutOfBoundsException:例外をスローします。
Asif Mushtaq 2017年

タイプがではTなくの場合はどうなりStringますか?
アリ

1
@csharpfolk、あなたは空のIntArray初期化するintArrayOfを()を使用することができ
Cremons

kotlinの文字列配列にアイテムを追加する方法は?
Syed Hamza Hassan

42

参考までに、もありますemptyArray。例えば、

var arr = emptyArray<String>()

見る


1
arr [0]は、java.lang.ArrayIndexOutOfBoundsException:どのように使用できるかをスローしますか?
Asif Mushtaq 2017年

8
これは空の配列であり、そこに何かを追加したり、そこから何かを読み取ったりすることはできません。役に立たないように思えるかもしれませんが、配列をどこかに渡す必要がある場合があります。これにより、空の配列を簡単に作成できます。
クバBeránek

1
これは、Martian Odysseyの回答よりも優れています。これは、データクラスで配列を初期化するために使用すると、arrayOfによってjava.util.concurrent.ExecutionExceptionが発生し、emptyArray()では発生しないためです。
iSWORD 2017

1
これは不変の長さです0!したがって、データを保存したくない(typeが必要な)という非常に特別な目的にのみ役立ちます。Array(length){""}目的のを含めるために使用しますlength。詳細については以下の私の回答を参照してください。
Mir-Ismaili 2018

14

空またはnull?それが問題です!

の配列を作成するにはnull、単にarrayOfNulls<Type>(length)。を使用します。


ただし、サイズの空の配列を生成するにはlength、次を使用します。

val arr = Array(length) { emptyObject }

注意点は、データ型ごとに適切に定義する必要があるということですemptyObject(sが必要ないためnull)。例:以下のためStringの、emptyObject可能""。そう:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")

ここ実際の例。プログラムは、デフォルトで2つのサンプル引数を使用して実行されることに注意してください。



2

使用する:

@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)

null値で初期化された0サイズの文字列配列を返します。

1.間違った:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

戻ります arrayOfNulls<String>(0)

2.間違った:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

文字列を含む配列を返します。


2

上記のように、IntArray(size)またはを使用できますFloatArray(size)


1

空の配列を作成する2つの方法を見つけました。2つ目はラムダを使用しない方法です。

var arr = Array (0, { i -> "" })
var arr2 = array<String>()

Kotlinのnull文字列に関しては、これは許可されていません。文字列を使用する必要がありますか?文字列をnullにできるように入力します。

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