🔹 Map 선언 및 기본 사용
✅ 가변 Map
val map = mutableMapOf<String, Int>()
map["a"] = 1 // put("a", 1)과 동일
map["b"] = 2
✅ 불변 Map
val map = mapOf("a" to 1, "b" to 2)
✅ 주요 메서드
map["a"] // 키로 값 접근 (null 가능성 있음)
map.getOrDefault("x", 0) // 키 없을 때 기본값 반환
map.containsKey("a")
map.remove("a")
map.clear()
✅ 순회
for ((k, v) in map) println("$k : $v")
🔹 키 / 값 / Entry 접근 / 크기
map.keys // Set<K>
map.values // Collection<V>
map.entries // Set<Map.Entry<K, V>>
map.size // int
🔹 초기화와 정렬
🔸 초기값 지정
val map = mutableMapOf("a" to 1, "b" to 2)
🔸 정렬된 Map
val sorted = map.toSortedMap() // 키 기준 정렬
val sortedByValue = map.toList().sortedBy { it.second }.toMap()
🔹 기본값 포함 Map (디폴트맵 패턴)
val count = mutableMapOf<Char, Int>()
val ch = 'a'
count[ch] = count.getOrDefault(ch, 0) + 1
- 카운팅, 빈도수 계산에 매우 유용
🔹 추가 유용 메서드 및 실전 패턴
🔸 getOrPut: 기본값 넣고 접근
val m = mutableMapOf<String, Int>()
val value = m.getOrPut("a") { 0 } // 없으면 0으로 초기화 후 반환
🔸 문자열 빈도수 카운트: groupingBy
val s = "banana"
val freq = s.groupingBy { it }.eachCount() // {b=1, a=3, n=2}
🔸 map을 리스트로 변환 후 정렬
val sorted = map.toList().sortedBy { it.second }.toMap()
🔸 필터링
val filteredKeys = map.filterKeys { it >= "b" }
val filteredValues = map.filterValues { it >= 2 }
🔹 Set 선언 및 사용
🔸 초기값 지정
val set = mutableSetOf(1, 2, 3) // [1, 2, 3]
val emptySet = mutableSetOf<Int>()
✅ 가변 Set
val set = mutableSetOf<Int>()
set.add(1)
set.add(2)
✅ 불변 Set
val set = setOf(1, 2, 3)
✅ 주요 메서드
set.contains(2)
set.remove(2)
set.clear()
set.isEmpty()
🔹 Set 집합 연산
val a = setOf(1, 2, 3)
val b = setOf(2, 3, 4)
val union = a.union(b) // 합집합: [1, 2, 3, 4]
val intersect = a.intersect(b) // 교집합: [2, 3]
val subtract = a.subtract(b) // 차집합: [1]
- 결과는 모두 불변 Set이며 필요 시
.toMutableSet()으로 변환 가능
🔹 리스트에서 중복 제거 (toSet())
val list = listOf(1, 2, 2, 3, 3, 3)
val unique = list.toSet() // [1, 2, 3]
- toSet()은 중복된 값을 제거한 Set으로 변환
- 순서가 유지되지 않을 수 있음 (기본은 HashSet)
- 출력이나 비교 전 중복을 제거할 때 자주 사용
println(unique.contains(2)) // true
println(unique.size) // 3
✅ List → Set 변환은 코테에서 중복 제거용으로 자주 사용됨
✅ 요약 정리
- Map 선언:
mutableMapOf(),mapOf("a" to 1) - Set 선언:
mutableSetOf(),setOf(1, 2) - 접근:
map[key],getOrDefault,containsKey - 순회:
for ((k, v) in map),set.forEach {} - 키/값/엔트리 접근:
map.keys,map.values,map.entries - 정렬:
toSortedMap(),sortedBy { it.second }.toMap()
다음은 시리즈 ⑦: 2차원 배열 / 리스트 정리로 이어집니다.
'Code Odyssey' 카테고리의 다른 글
| Kotlin 코딩테스트 문법 시리즈 ⑧ : 스택 / 큐 / 우선순위 큐 정리 (0) | 2025.07.08 |
|---|---|
| Kotlin 코딩테스트 문법 시리즈 ⑦ : 2차원 배열(리스트) 정리 (2) | 2025.07.07 |
| Kotlin 코딩테스트 문법 시리즈 ⑤ : 리스트(List) 정리 (0) | 2025.07.05 |
| Kotlin 코딩테스트 문법 시리즈 ④ : 배열(Array) 정리 (1) | 2025.07.04 |
| Kotlin 코딩테스트 문법 시리즈 ③ : 입출력 & 조건문 & 반복문 정리 (1) | 2025.07.03 |