코틀린을 사용하면 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 객체를 만들기 위한 함수는 다음과 같다.
함수 | 자료형 |
arrayListOf | ArrayList<T> |
emptyList | List<T> |
listOf | List<T> |
listOfNotNull | List<T> |
mutableListOf | MutableList<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 객체를 만들기 위한 함수는 다음과 같다.
함수 | 자료형 |
mapOf | Map<K,V> |
hashMapOf | HashMap<K, V> |
linkedMapOf | LinkedHashMap<K, V> |
sortedMapOf | SortedMap<K, V> |
mutableMapOf | MutableMap<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 객체를 만들기 위한 함수는 다음과 같다.
함수 | 자료형 |
setOf | Set<T> |
hashSetOf | HashSet<T> |
linkedSetOf | LinkedHashSet<T> |
sortedSetOf | TreeSet<T> |
mutableSetOf | MutableSet<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