안녕하세요! 오늘은 Kotlin에서 기본적으로 제공하는 자료구조에 대해 알아보겠습니다. 이번 포스팅에서는 배열과 리스트, Set, Map 등 Kotlin에서 많이 사용되는 컬렉션들을 살펴보고, 예제 코드를 통해 각 자료구조의 특징과 사용법을 소개하겠습니다.
배열 (Array)
Kotlin의 배열은 같은 타입의 데이터를 순서대로 저장하는 자료구조입니다. 배열은 고정된 크기를 가지며 인덱스를 사용하여 접근할 수 있습니다.
배열을 생성하는 방법은 다양하지만, 가장 기본적인 방법은 arrayOf()
함수를 사용하는 것입니다.
fun main() {
val numbers = arrayOf(1, 2, 3, 4, 5)
println("배열의 크기: ${numbers.size}")
println("첫 번째 원소: ${numbers[0]}")
// 배열의 원소 업데이트
numbers[2] = 10
println("업데이트된 배열: ${numbers.joinToString()}")
}
주요 함수 및 특징
size
: 배열의 크기를 반환합니다.get(index)
,[]
: 특정 인덱스의 값을 가져옵니다.set(index, value)
,[]
: 특정 인덱스의 값을 변경합니다.
배열은 원시적인 자료구조이기 때문에 크기를 변경할 수 없다는 점을 기억해야 합니다. 만약 크기가 가변적인 자료구조가 필요하다면, List
를 사용하는 것이 좋습니다.
리스트 (List)
List
는 Kotlin에서 순서가 있는 데이터를 저장하는 컬렉션입니다. List
는 크게 가변 리스트 (MutableList)와 불변 리스트 (List)로 나눌 수 있습니다.
- 불변 리스트: 읽기 전용으로 데이터를 변경할 수 없습니다.
- 가변 리스트: 데이터를 추가하거나 삭제할 수 있습니다.
fun main() {
// 불변 리스트
val fruits = listOf("Apple", "Banana", "Cherry")
println("과일 리스트: ${fruits.joinToString()}")
// 가변 리스트
val mutableFruits = mutableListOf("Apple", "Banana")
mutableFruits.add("Cherry")
println("업데이트된 가변 리스트: ${mutableFruits.joinToString()}")
}
주요 함수 및 특징
add(element)
: 가변 리스트에 원소를 추가합니다.remove(element)
: 가변 리스트에서 특정 원소를 제거합니다.get(index)
,[]
: 특정 인덱스의 값을 가져옵니다.
리스트는 데이터를 순서대로 저장하고, 중복된 값을 허용합니다. 가변 리스트를 사용하면 데이터의 추가 및 삭제가 가능하므로 유연한 데이터 관리를 할 수 있습니다.
Set
Set
은 중복을 허용하지 않는 데이터의 집합을 저장하는 컬렉션입니다. 또한, Set
은 순서가 보장되지 않습니다. Set
도 마찬가지로 불변 setOf()
와 가변 mutableSetOf()
로 나뉩니다.
fun main() {
// 불변 Set
val numbers = setOf(1, 2, 3, 3, 4)
println("불변 Set: ${numbers.joinToString()}") // 중복된 3은 하나만 저장됩니다.
// 가변 Set
val mutableNumbers = mutableSetOf(1, 2, 3)
mutableNumbers.add(4)
mutableNumbers.add(3) // 이미 존재하는 값은 추가되지 않음
println("가변 Set: ${mutableNumbers.joinToString()}")
}
주요 함수 및 특징
add(element)
: 가변 Set에 원소를 추가합니다.remove(element)
: 가변 Set에서 특정 원소를 제거합니다.contains(element)
: 특정 원소가 Set에 포함되어 있는지 확인합니다.
Set
은 중복된 데이터를 제거하고 고유한 값만을 저장해야 할 때 유용하게 사용할 수 있습니다.
Map
Map
은 키-값 쌍으로 데이터를 저장하는 컬렉션입니다. 각 키는 고유하며, 이를 통해 값에 접근할 수 있습니다. Map
도 불변 mapOf()
와 가변 mutableMapOf()
로 나뉩니다.
fun main() {
// 불변 Map
val countryCodes = mapOf("KR" to "South Korea", "JP" to "Japan", "US" to "United States")
println("국가 코드: ${countryCodes["KR"]}")
// 가변 Map
val mutableCountryCodes = mutableMapOf("KR" to "South Korea", "JP" to "Japan")
mutableCountryCodes["US"] = "United States"
println("업데이트된 국가 코드: ${mutableCountryCodes.entries.joinToString { "${it.key}=${it.value}" }}")
}
주요 함수 및 특징
put(key, value)
: 가변 Map에 키-값 쌍을 추가하거나 업데이트합니다.remove(key)
: 특정 키에 해당하는 값을 제거합니다.get(key)
,[]
: 특정 키에 해당하는 값을 가져옵니다.
Map
은 데이터를 키로 관리할 수 있어서 빠른 검색이 필요한 경우 유용합니다. 예를 들어, 국가 코드나 사용자 정보를 키로 관리하는 상황에서 자주 사용됩니다.
정리 및 예제
Kotlin에서 제공하는 다양한 컬렉션들은 각기 다른 상황에서 유용하게 사용할 수 있습니다. 배열은 고정된 크기의 데이터를 다룰 때, 리스트는 순서가 있는 데이터를 관리할 때, Set은 중복되지 않는 데이터를 저장할 때, Map은 키-값 쌍으로 데이터를 관리할 때 적합합니다.
아래는 위에서 배운 자료구조들을 활용하여 간단한 예제를 작성한 것입니다.
fun main() {
// 학생들의 이름과 점수를 관리하는 예제
val students = mutableMapOf("Alice" to 85, "Bob" to 90, "Charlie" to 78)
// 새로운 학생 추가
students["David"] = 92
println("학생 목록: ${students.entries.joinToString { "${it.key}=${it.value}" }}")
// 점수 80점 이상인 학생들의 이름을 리스트로 추출
val highScorers = students.filter { it.value >= 80 }.keys
println("80점 이상인 학생들: ${highScorers.joinToString()}")
// 학생들의 점수를 Set으로 저장하여 중복 제거
val uniqueScores = students.values.toSet()
println("학생들의 고유 점수: ${uniqueScores.joinToString()}")
}
이 예제에서는 학생들의 이름과 점수를 Map
으로 관리하고, 80점 이상인 학생들을 필터링하여 리스트로 추출했습니다. 또한, 학생들의 고유 점수를 Set
으로 저장하여 중복 점수를 제거하는 방법도 보여줍니다.
오늘은 Kotlin에서 자주 사용하는 기본 자료구조인 배열, 리스트, Set, Map에 대해 알아보았습니다. 각각의 자료구조는 고유한 특징과 사용 목적이 있으므로, 필요에 따라 적절한 자료구조를 선택하여 사용해 보세요!
'kotlin' 카테고리의 다른 글
Kotlin 애노테이션과 리플렉션 (0) | 2024.12.18 |
---|---|
코틀린(Kotlin) 제네릭 (Generics) 완벽 가이드 (0) | 2024.12.17 |
Kotlin 클래스와 객체지향 프로그래밍 (0) | 2024.12.15 |
Kotlin 문자열 처리 - 문자열 템플릿과 함수 활용하기 (0) | 2024.12.14 |
Kotlin 언어 제어문[ if, when, switch, for, while , do-while ] 가이드 (0) | 2024.12.13 |