리스트, 세트, 맵 - swkim0128/PARA GitHub Wiki
코틀린에서 리스트(List), 세트(Set), **맵(Map)**은 대표적인 컬렉션(Collection) 자료구조입니다. 각각 데이터를 저장하고 조작하는 다양한 방법을 제공합니다.
리스트는 순서가 있는 요소들의 집합이며, 같은 요소를 중복 저장할 수 있습니다.
val list1 = listOf("Apple", "Banana", "Cherry") // 불변 리스트 (읽기 전용)
val list2 = mutableListOf("Dog", "Cat", "Horse") // 가변 리스트 (요소 추가 가능)
fun main() {
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // 출력: Apple
println(fruits.get(1)) // 출력: Banana
println(fruits.size) // 출력: 3
}
fun main() {
val animals = mutableListOf("Dog", "Cat", "Horse")
animals.add("Elephant") // 요소 추가
animals.remove("Cat") // 요소 삭제
animals[0] = "Tiger" // 값 변경
println(animals) // 출력: [Tiger, Horse, Elephant]
}
fun main() {
val numbers = listOf(10, 20, 30)
for (num in numbers) {
println(num)
}
numbers.forEach { println(it) }
}
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // 출력: [2, 4]
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // 출력: [1, 4, 9, 16, 25]
}
세트는 중복을 허용하지 않는 컬렉션으로, 요소의 순서를 보장하지 않습니다.
val set1 = setOf("Apple", "Banana", "Cherry") // 불변 세트
val set2 = mutableSetOf("Dog", "Cat", "Horse") // 가변 세트
fun main() {
val fruits = mutableSetOf("Apple", "Banana", "Cherry")
fruits.add("Banana") // 중복 요소 추가 시 무시됨
fruits.add("Orange")
fruits.remove("Cherry")
println(fruits) // 출력: [Apple, Banana, Orange]
}
fun main() {
val colors = setOf("Red", "Green", "Blue")
println("Green" in colors) // 출력: true
println(colors.contains("Yellow")) // 출력: false
}
fun main() {
val setA = setOf(1, 2, 3, 4, 5)
val setB = setOf(3, 4, 5, 6, 7)
println(setA union setB) // 합집합: [1, 2, 3, 4, 5, 6, 7]
println(setA intersect setB) // 교집합: [3, 4, 5]
println(setA subtract setB) // 차집합: [1, 2]
}
맵은 키(Key)와 값(Value)의 쌍으로 이루어진 컬렉션입니다.
val map1 = mapOf(1 to "Apple", 2 to "Banana", 3 to "Cherry") // 불변 맵
val map2 = mutableMapOf("name" to "John", "age" to 30) // 가변 맵
fun main() {
val users = mapOf("Alice" to 25, "Bob" to 30)
println(users["Alice"]) // 출력: 25
println(users.getOrDefault("Charlie", 0)) // 출력: 0
}
fun main() {
val scores = mutableMapOf("Math" to 90, "Science" to 85)
scores["English"] = 88 // 요소 추가
scores.remove("Science") // 요소 삭제
scores["Math"] = 95 // 값 변경
println(scores) // 출력: {Math=95, English=88}
}
fun main() {
val users = mapOf("Alice" to 25, "Bob" to 30)
for ((key, value) in users) {
println("$key의 나이: $value")
}
users.forEach { (key, value) -> println("$key: $value") }
}
fun main() {
val users = mapOf("Alice" to 25, "Bob" to 30, "Charlie" to 22)
val filteredUsers = users.filter { it.value >= 25 }
println(filteredUsers) // 출력: {Alice=25, Bob=30}
}
컬렉션 | 특징 | 중복 허용 | 순서 유지 |
---|---|---|---|
List | 순서가 있는 요소 집합 | ✅ 허용 | ✅ 유지 |
Set | 중복을 허용하지 않는 집합 | ❌ 불허 | ❌ 유지되지 않을 수 있음 |
Map | 키-값 쌍으로 저장 | 키는 중복 ❌, 값은 중복 ✅ | 키 기반 접근 |
기능 | List | Set | Map |
---|---|---|---|
선언 방식 | listOf(), mutableListOf() | setOf(), mutableSetOf() | mapOf(), mutableMapOf() |
요소 접근 | list[index] | set.contains(value) | map[key] |
수정 가능 여부 | mutableListOf() 사용 시 가능 | mutableSetOf() 사용 시 가능 | mutableMapOf() 사용 시 가능 |
중복 허용 여부 | ✅ 허용 | ❌ 불허 | 키 ❌, 값 ✅ |
코틀린의 컬렉션(List, Set, Map)은 안전하고 간결한 코드를 작성할 수 있도록 다양한 기능을 제공합니다. 각 컬렉션의 특성을 이해하고 적절한 상황에 맞게 활용하면 효율적인 데이터 처리가 가능합니다! 🚀