[Kotlin] 코틀린에서 배열, 2차원 배열, 다차원 배열 사용해보기

 


배열은 프로그래밍을 할 때 거의 필수적으로 사용되기 때문에 언어를 처음 배울 때 반드시 알아야 할 것입니다. 자바나 C 계열 언어에서는 배열을 선언하기 비교적 쉽습니다. 'int arr[10]' 이런 형식으로 간단히 만들어줄 수 있으니까요. 그런데 코틀린은 뭔가 조금 복잡합니다. 코틀린으로 배열을 사용하는 방법을 알아봅시다.




배열

배열은 크기를 미리 선언해서 공간의 추가 및 삭제가 불가능한 자료형이죠. 다만 변동이 크지 않은 비교적 적은 데이터를 사용할 때 자주 사용하게 됩니다.



1차원 배열 선언

Array, arrayOf, emptyArray, arrayOfNulls를 이용해서 배열을 선언해줄 수 있습니다. 사실 emptyArray나 arrayOfNulls는 자주 사용할 지는 잘 모르겠지만.. 그래도 모르는 것보다는 낫겠죠. 그렇게 따지면 그냥 배열을 사용하지 않고 리스트만으로도 구현할 수 있을 테니까요.





1. Array


Array로 배열을 선언해 봅시다. 타입 + Array로 배열을 선언할 수 있으며, 타입에 상관 없는 배열을 원한다면 그냥 Array만 쓰면 됩니다. 위에 처럼 하면 길이가 10짜리 배열이 나오게 됩니다. 이 때 배열을 특정 값으로 전부 초기화하고 싶으면 위처럼 두번째 인자에 {'초기화할 값'}을 넣어주면 됩니다.

var intArray = IntArray(10)
var charArray = CharArray(10, {'a'})
var floatArray = FloatArray(10, {1.0f})
var doubleArray = DoubleArray(10)
var array = Array(10)

이 때 String은 StringArray로 만들지 않고 Array에 넣어서 사용합니다. String은 기본 타입이 아니기 때문이죠. String 역시 초기화를 하고 싶다면 아래와 같이 만들면 됩니다.


var stringArray = Array(10, {str->"abc"})



2. arrayOf

arrayOf를 이용해서 배열을 직접 만들 수도 있습니다. 마찬가지로 타입을 앞에 붙이면 배열의 타입을 지정할 수 있으며, 타입을 지정하지 않으면 모든 타입의 값들이 하나의 배열에 들어갈 수 있습니다. 역시 String 타입은 arrayOf를 이용합니다. 


var arr1 = intArrayOf(1, 2, 3, 4)
var arr2 = charArrayOf('a', 'b', 'c', 'd')
var arr3 = floatArrayOf(1.0f, 2.0f, 3.0f)
var arr4 = arrayOf(1, 2, 3, 4, 5.0f, 'a', 'b', 'c', "abc", "bcd")




3. emptyArray, arrayOfNulls

빈 값을 가지는 배열을 만들거나 모든 값을 Null로 초기화한 배열을 만들 수도 있습니다. 각각 아래의 코드처럼 만들 수 있습니다. 중요한 것은 빈 배열 또는 Null로 초기화가 되기 때문에 제너릭으로 타입을 지정해 주어야 한다는 것입니다.


var arr1 = emptyArray<Int>()
var arr2 = emptyArray<String>()
var arr3 = arrayOfNulls<Int>(5)
var arr4 = arrayOfNulls<String>(5)





2차원, 다차원 배열 선언

1차원 배열을 선언한 것과 큰 차이는 없지만, Java나 C++ 등에서 사용한 것보다는 복잡해서 처음에 많이 당황할 수 있습니다. 대체 왜 이런 식으로 사용하는 지 알 수가 없네요.. 아래와 같이 사용하시면 됩니다.


// 2차원 배열
var array = Array(3, { Array(4, {0}) })

// 3차원 배열
var array2 = Array(10, { Array( 4, { Array(5, {1}) } ) } )

배열 안에 배열을 넣고, 그 안에 또 배열을 넣고... 코틀린이 처음이라 이렇게 하는 이유를 모르겠지만 이렇게 사용한다니까 어쩔 수 없죠.






마치며..

요즘 안드로이드 개발은 코틀린을 많이 사용해서 대세에 따라 공부 중인데, 배열 쓰는 것 부터 벌써 머리가 아프네요.. 익숙해지면 이걸로 코딩 테스트 준비도 한 번 해보려고 했지만, 그냥 파이썬을 사용해야 할 것 같네요. 그래도 코틀린 관련 글은 공부하는 대로 꾸준히 올려보도록 하겠습니다. 


댓글