Kotlin에서 빈 배열을 만드는 방법은 무엇입니까?


93

Array(0, {i -> ""})현재 사용 하고 있으며 다음과 같은 더 나은 구현이 있는지 알고 싶습니다.Array()

또한을 사용 arrayOfNulls<String>(0) as Array<String>하는 경우 컴파일러는이 캐스트가 결코 성공할 수 없음을 경고합니다. 그러나 내부의 기본 구현 Array(0, {i -> ""})입니다. 내가 뭔가를 놓친 건가요?


stackoverflow.com/questions/33583235/... - 의견 중 하나가 경고 버그 제안
던컨 맥그리거

답변:


128

늦게 (2015 년 6 월) Kotlin 표준 라이브러리 기능이 있습니다.

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

따라서 빈 문자열 배열을 만들려면 다음과 같이 작성할 수 있습니다.

val emptyStringArray = arrayOf<String>()

2
유형 배열은 IntArray어떻습니까? 지금 사용 arrayOf<Int>().toIntArray()하고 있습니다. 더 좋은 방법이 있습니까?
csharpfolk

5
이 방법의 목적은 무엇입니까? 크기를 할당 할 수 없기 때문에 값을 할당하거나 얻을 수 없습니다. array [0] java.lang.ArrayIndexOutOfBoundsException:예외가 발생했습니다.
Asif Mushtaq

유형이 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

8
빈 배열이므로 추가 / 읽을 수 없습니다. 쓸모없는 것처럼 보일 수 있지만 때로는 어딘가에 배열을 전달해야하며 빈 배열을 쉽게 구성 할 수 있습니다.
Kuba Beránek

1
이것은 Martian Odyssey의 대답보다 낫습니다. 데이터 클래스에서 배열을 초기화하는 데 사용될 때 arrayOf는 java.util.concurrent.ExecutionException을 일으키고 emptyArray ()는 그렇지 않기 때문입니다.
iSWORD

1
이것은 불변의 길이가 0! 따라서 데이터를 저장하지 않으려는 매우 특별한 목적을 위해서만 유용 합니다 (단지 type ). 사용하여 Array(length){""}원하는 포함 length. 자세한 내용은 아래 내 대답을 참조하십시오.
Mir-Ismaili

14

비어 있거나 null? 그게 질문입니다!

의 배열을 만들려면 null간단히 arrayOfNulls<Type>(length).


그러나 size 의 배열 을 생성 length하려면 다음을 사용하십시오.

val arr = Array(length) { emptyObject }

참고 사항은 각 데이터 유형별 적절하게 정의 해야 한다는 것입니다emptyObject (원하지 않기 때문에 null). 예. 대한 String의, emptyObject수 있습니다 "". 그래서:

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

다음실제 예 입니다. 프로그램은 기본적으로 두 개의 샘플 인수로 실행됩니다.



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

빈 배열을 만드는 두 가지 방법, 람다없이 두 번째 방법을 찾았습니다.

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

Kotlin의 null 문자열에 대해서는 허용되지 않습니다. String 을 사용해야 합니까? 문자열이 널이되도록 허용하는 유형입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.