코틀린 표준 함수로 List, Map, Set 생성하기

코틀린을 사용하면 List, Map, Set을 자동으로 생성해주는 표준 함수들을 쓸 수 있다.

코틀린 Array

다음은 코틀린의 Array 생성 함수들.

  • arrayOf() — kotlin.Array
  • intArrayOf() — kotlin.IntArray
  • emptyArrayOf<T>()
val array = arrayOf(1,2,3)     // Kotlin.Array
val intArray = IntArrayOf(1,2,3)  // Kotlin.IntArray
val emptyArray = emptyArray<Int>()

그리고 Kotlin.Library.kt에 따르면 Array를 생성할 수 있는 함수들은 다음과 같다.

fun <reified @PureReifiable T> arrayOfNulls(size: Int): Array<T?>

fun doubleArrayOf(vararg elements: Double): DoubleArray

fun floatArrayOf(vararg elements: Float): FloatArray

fun longArrayOf(vararg elements: Long): LongArray

fun intArrayOf(vararg elements: Int): IntArray

fun charArrayOf(vararg elements: Char): CharArray

fun shortArrayOf(vararg elements: Short): ShortArray

fun byteArrayOf(vararg elements: Byte): ByteArray

fun booleanArrayOf(vararg elements: Boolean): BooleanArray

함수 이름 뿐만 아니라 return 자료형 또한 눈여겨보는 것이 중요한데 IntArray, CharArray 등은 Array와 같은 클래스가 아니기 때문이다. 

정의로 들어가보면 Array가 확장된 클래스가 아님을 알 수 있다.

코틀린 List

코틀린에서 List 객체를 만들기 위한 함수는 다음과 같다.

함수자료형
arrayListOfArrayList<T>
emptyListList<T>
listOfList<T>
listOfNotNullList<T>
mutableListOfMutableList<T>

아래는 List 예시 소스 코드

val list = listOf(1, 2, 3)
val list = arrayListOf(1, 2, 3)
val list = mutableListOf("a", "b", "c")

// 비어있는 List 생성
val list = listOf<Int>()
val list = arrayListOf<Double>()
val list = mutableListOf<String>()
val list: List<Int> = emptyList()

// null 삽입 가능 여부
val list = listOf("a", null)                  // [a, null]
val list = arrayListOf("a", null)             // [a, null]
val list = mutableListOf("a", null)           // [a, null]
val list = listOfNotNull<String>("a", null)   // [a]
val list = listOfNotNull("a", null)           // [a]

코틀린 문서에 따르면 listOfNotNull은 null을 제외한 읽기 전용의 List를 반환한다.

따라서 listOf로 List를 생성하면 null을 포함할 수 있지만 listOfNotNull은 그렇지 않다는 것을 확인할 수 있다.

코틀린 Map

코틀린에서 Map 객체를 만들기 위한 함수는 다음과 같다.

함수자료형
mapOfMap<K,V>
hashMapOfHashMap<K, V>
linkedMapOfLinkedHashMap<K, V>
sortedMapOfSortedMap<K, V>
mutableMapOfMutableMap<K, V>

코틀린은 JavaScript에서 쓰이는 linkStringMapOf와 stringMapOf 기능 또한 가지고 있다.

아래는 Map 예시 소스 코드

val map = mapOf("b" to 2, "a" to 1)          // {b=2, a=1}

val map = hashMapOf("b" to 2, "a" to 1)      // {a=1, b=2}

val map = linkedMapOf("b" to 2, "a" to 1)    // {b=2, a=1}

val map = sortedMapOf("b" to 2, "a" to 1)    // {a=1, b=2}

val map = mutableMapOf("b" to 2, "a" to 1)   // {b=2, a=1}

코틀린 Set

코틀린에서 Set 객체를 만들기 위한 함수는 다음과 같다.

함수자료형
setOfSet<T>
hashSetOfHashSet<T>
linkedSetOfLinkedHashSet<T>
sortedSetOfTreeSet<T>
mutableSetOfMutableSet<T>

코틀린은 Map과 마찬가지로 JavaScript에서 쓰이는 linkedSetOf와 setOf 기능 또한 가지고 있다.

아래는 Set 예시 소스 코드

val set = setOf(3, 5, 1)          // [3, 5, 1]

val set = hashSetOf(3, 5, 1)      // [5, 1, 3]

val set = linkedSetOf(3, 5, 1)    // [3, 5, 1]

val set = sortedSetOf(3, 5, 1)    // [1, 3, 5]

val set = mutableSetOf(3, 5, 1)   // [3, 5, 1]

이로써 코틀린의 List, Map, Set에 대한 사용법을 간략하게 훑어보았다.

자세한 내용은 아래의 코틀린 공식 문서 링크를 통해 확인이 가능하다.

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/index.html

평점

Leave a Comment