1. 컬렉션 (Collection)
컬렉션은 여러 요소를 함께 저장하고 구성할 수 있는 데이터 구조이다.
쉽게 말해 배열이라고 생각하면 될 것이다.
하지만, 크기가 고정된 배열과 달리 컬렉션은 크기가 고정되어 있지 않다.
즉, 컬렉션은 동적으로 요소 수에 따라 확장되거나 축소될 수 있다.
컬렉션은 가변(mutable)과 불변(immutable), 두 가지 성격을 가지고 있다.
1) Mutable (변경 가능)
변경 가능한 컬렉션은 생성 후 수정이 가능하다.
추후, 필요에 따라 요소를 추가, 제거 또는 수정할 수 있다.
2) Immutable (변경 불가능)
이름에서 알 수 있듯, 생성되면 수정할 수 없는 컬렉션이다.
Mutable과 달리, 추가, 제거 또는 변경할 수 없다.
어느 것을 쓰는 게 좋냐는 질문에는, 코드를 작성할 때, 불변한 Immutable을 사용하는 게 좋다.
변경이 안되기 때문에, 버그에 대한 위험이 줄어들고, 프로그램을 더 쉽게 이해하고 유지할 수 있기 때문이다.
컬렉션은 특징에 따라 List, Set, Map 으로 구성되어 있다.
2. 리스트 (List)
리스트는 중복된 값을 허용하는 데이터 요소들의 모임이다.
1) Mutable (변경 가능)
변경 가능한 컬렉션은 생성 후 수정이 가능하다.
추후, 필요에 따라 요소를 추가, 제거 또는 변경할 수 있다.
val 리스트명 = mutableListOf<자료형>("값1", "값2" ... )
변경 가능한 리스트는 앞에 mutable을 붙여 리스트를 생성한다.
자료형은 생략할 수 있다.
val mutableList = mutableListOf("apple", "banana", "orange")
// 리스트에 grape를 추가
mutableList.add("grape")
// 1번째 인덱스의 요소 제거
mutableList.removeAt(1)
// 0번째 데이터를 kiwi로 변경
mutableList[0] = "kiwi"
println(mutableList)
[출력결과]
[kiwi, orange, grape]
2) Immutable (변경 불가능)
val 리스트명 = listOf<자료형>("값1", "값2" ... )
변경 불가능한 리스트는 앞에 수식어를 붙이지 않고, 바로 listOf로 생성할 수 있다.
자료형은 생략할 수 있다.
val immutableList = listOf("apple", "banana", "orange")
// 0번째 리스트에 접근
val firstElement = immutableList[0]
println(immutableList)
[출력결과]
[apple, banana, orange]
3. 세트 (Set)
세트(Set)는 중복된 값을 허용하지 않고, 순서없이 저장하는 컬렉션이다.
1) Mutable (변경 가능)
val 세트명 = mutableSetOf<자료형>("값1", "값2" ... )
리스트와 마찬가지로 변경가능한 컬렉션언은 앞에 mutable을 붙인다.
val mutableSet = mutableSetOf("apple", "banana", "orange")
// set에 grape 추가
mutableSet.add("grape")
// "banana" 제거
mutableSet.remove("banana")
println(mutableSet)
[출력결과]
[apple, orange, grape]
2) Immutable (변경 불가능)
val 세트명 = setOf<자료형>("값1", "값2" ... )
setOf 를 붙여 변경 불가능한 세트를 만든다.
val immutableSet = setOf("apple", "banana", "orange")
println(immutableSet)
[출력결과]
[apple, banana, orange]
o immutable
- 형태
- setOf<자료형> (값1, 값2, 값3, 값1, 값1) -> setOf<자료형> (값1, 값2, 값3)
o mutable
- 형태
- mutableSetIf<자료형>(값1, 값2, 값3, 값1, 값1)
4. 맵 (Map)
맵(Map)은 키와 값(key - value)을 쌍으로 저장하는 컬렉션이다.
1) Mutable (변경 가능)
val 맵명 = mutableMapOf("키1" to "값1", "키2" to "값2")
변경 가능한 맵(map)을 생성하기 위해서는 mutableMapOf 키워드를 작성한 후, 키와 값을 넣어준다. 키-값은 to로 연결한다.
val mutableMap = mutableMapOf("name" to "John", "age" to 30, "city" to "London")
// 맵에 키-값 쌍 추가
mutableMap["country"] = "UK"
// 맵의 age 키가 있는 키-값 쌍 제거
mutableMap.remove("age")
println(mutableMap)
[출력결과]
{name=John, city=London, country=UK}
2) Immutable (변경 불가능)
val 맵명 = mapOf("키1" to "값1", "키2" to "값2")
변경 불가능한 맵(map)을 생성하기 위해서는 mapOf 키워드를 작성한 후, 변경가능한 맵과 마찬가지로 키와 값을 넣어준다. 키-값은 to로 연결한다.
val immutableMap = mapOf("name" to "John", "age" to 30, "city" to "London")
// map의 name 값에 접근
val name = immutableMap["name"]
println(immutableMap)
println(name)
[출력결과]
{name=John, age=30, city=London}
John
'Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 확장 함수(Extension Function), 확장 프로퍼티(Extension Property) (0) | 2024.07.11 |
---|---|
[Kotlin] 코틀린 배열 arrayOf(), intArrayOf(), Array (0) | 2023.05.15 |
[Kotlin] 코틀린 반복문 for, while, do while 반복문 활용 (0) | 2023.05.08 |
[Kotlin] 코틀린 조건문 if-else 와 when 사용법 파헤치기 (0) | 2023.05.03 |
[Kotlin] 코틀린 메소드 (Method) 선언하기 : 메소드 정의, 함수의 타입, 매개변수, 반환값 정의 방법 (0) | 2023.05.02 |