프로그래밍을 하다 보면 하나의 변수에 여러 개의 값을 저장해야 할 필요성이 생깁니다. 코틀린 뿐만아니라 대부분의 컴퓨터의 언어들은 이처럼 여러갣의 값을 하나의 변수에 저장 할 수 있도록 배열과 컬렉션이라는 데이터 타입을 제공합니다.
코틀린에서 배열은 동일한 데이터 타입의 고정된 크기의 요소로 이루어진 데이터 구조입니다. 배열은 다음과 같이 선언됩니다.
val arrayName: Array<Type> = arrayOf(value1, value2, value3, ...)
여기서 arrayName
은 배열의 이름, Type
은 배열 요소의 데이터 타입, value1
, value2
, value3
등은 배열의 요소입니다. 배열의 요소는 인덱스를 사용하여 접근할 수 있습니다. 첫번째 요소는 인덱스 0, 두번째 요소는 인덱스 1, 세번째 요소는 인덱스 2, ..., 마지막 요소는 인덱스 arrayName.size - 1
입니다.
val arrayName = arrayOf("value1", "value2", "value3")
//인덱스 번호로 값에 접근하는 방법
println(arrayName[0]) // "value1" 출력
println(arrayName[2]) // "value3" 출력
//get함수를 사용해서 값에 접근하는 방법
println(arrayName.get(1)) // "value2" 출력
또한, 코틀린에서는 arrayOf
함수 뿐만 아니라 intArrayOf
, floatArrayOf
, charArrayOf
등의 함수를 사용하여 데이터 타입이 정해진 배열을 생성할 수 있습니다.
val intArray = intArrayOf(1, 2, 3, 4, 5)
val charArray = charArrayOf('a', 'b', 'c', 'd', 'e')
배열은 요소의 개수가 고정되어 있기 때문에 크기를 변경할 수 없습니다. 따라서 배열의 크기를 변경할 필요가 있는 경우에는 대신 컬렉션을 사용해야 합니다.
코틀린에서 컬렉션은 배열과 달리 크기가 가변적인 데이터 타입입니다. 컬렉션은 제네릭 클래스로 이루어져 있으며, 여러개의 데이터를 담을 수 있는 자료구조입니다.
코틀린에서 제공하는 컬렉션 클래스에는 List
, Set
, Map
등이 있습니다.
List
인터페이스는 순서가 있는 데이터 집합입니다. List
는 다음과 같이 생성될 수 있습니다.
val list: List<String> = listOf("value1", "value2", "value3")
Set
인터페이스는 중복을 허용하지 않는 순서 없는 데이터 집합입니다. Set
은 다음과 같이 생성될 수 있습니다.
val set: Set<String> = setOf("value1", "value2", "value3")
Map
인터페이스는 순서 없는 key-value
쌍의 데이터 집합입니다. Map
은 다음과 같이 생성될 수 있습니다.
val map: Map<String, Int> = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
컬렉션은 크기가 가변적이므로, 요소를 추가하거나 삭제할 수 있습니다. add
, remove
등의 함수를 사용하여 요소를 추가하거나 삭제할 수 있습니다.
val list = mutableListOf("value1", "value2", "value3")
list.add("value4") // ["value1", "value2", "value3", "value4"]
list.remove("value2") // ["value1", "value3", "value4"]
컬렉션은 배열보다 다양한 기능을 제공합니다. 예를 들어, filter
, map
, reduce
등의 함수를 사용하여 요소를 검색하거나 변환하는 등의 작업을 할 수 있습니다.
Map
은 순서 없는 key-value
쌍의 데이터 집합입니다. Map
은 다음과 같이 생성될 수 있습니다.
val map: Map<String, Int> = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
Map
에 key
와 value
를 추가하는 방법은 다음과 같습니다.
val map = mutableMapOf<String, Int>()
map.put("key1", 1)
map.put("key2", 2)
map.put("key3", 3)
Map
에서 특정 key
의 value
를 가져오는 방법은 get
함수를 사용하거나 []
연산자를 사용하면 됩니다.
val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
val value1 = map.get("key1") // 1
val value2 = map["key2"] // 2
Map
에서 특정 key
의 value
를 수정하는 방법은 put
함수를 사용하거나 []
연산자를 사용하면 됩니다.
val map = mutableMapOf("key1" to 1, "key2" to 2, "key3" to 3)
map.put("key1", 10)
map["key2"] = 20
Map
에서 특정 key
와 value
를 삭제하는 방법은 remove
함수를 사용하면 됩니다.
val map = mutableMapOf("key1" to 1, "key2" to 2, "key3" to 3)
map.remove("key1")