학습
Scala 기본 자료구조: 맵 (Map)
Scala 기본 자료구조: 맵 (Map) — 초급
기본 자료구조: 맵 (Map)
1. 도입 (왜 배워야 하는가)
맵(Map)은 키-값 쌍을 저장하는 자료구조로, 데이터를 효율적으로 관리하고 검색할 수 있는 강력한 도구입니다. 실무에서는 데이터베이스에서 가져온 데이터를 구조화하거나 API 응답을 처리할 때 맵을 사용할 일이 많습니다. 예를 들어, 사용자의 프로필 정보를 담는 경우, 사용자 ID를 키로 하고 그에 해당하는 정보를 값으로 저장할 수 있습니다.
맵을 사용하지 않으면 데이터를 정리하기 어렵고, 특정 값을 찾기 위해 전체 데이터를 반복적으로 탐색해야 하므로 성능이 저하됩니다. 이는 특히 대량의 데이터를 다룰 때 큰 문제를 일으킬 수 있습니다.
2. 핵심 개념 설명
맵은 다음과 같은 속성을 가집니다:
- 키(key): 고유한 식별자로, 각 값에 접근하는 데 사용됩니다.
- 값(value): 키에 의해 식별되는 데이터입니다.
실생활 비유로 설명하자면, 맵은 '주소록'과 같습니다. 여기서 이름이 키이고, 전화번호가 값입니다. 이름으로 사람을 찾으면 그 사람의 전화번호를 쉽게 얻을 수 있습니다.
| 용어 | 정의 |
|---|---|
| 키 | 고유하게 값을 식별하는 요소 |
| 값 | 키에 대응하는 데이터 |
| 키-값 쌍 | 키와 그에 연관된 값의 쌍 |
3. 기본 코드 예제
아래는 Scala에서 맵을 사용하는 기본적인 예제입니다.
// 맵 생성
val userProfile = Map("user1" -> "Alice", "user2" -> "Bob", "user3" -> "Charlie")
// 맵에서 값 조회
val user1 = userProfile("user1") // "Alice"
// 맵에 새로운 키-값 쌍 추가
val updatedProfile = userProfile + ("user4" -> "David")
// 전체 맵 출력
println(updatedProfile)
실행 결과:
Map(user1 -> Alice, user2 -> Bob, user3 -> Charlie, user4 -> David)
코드 한 줄씩 동작 설명:
val userProfile = Map(...): 세 개의 키-값 쌍을 가진 맵을 생성합니다.val user1 = userProfile("user1"): "user1" 키에 해당하는 값을 조회하여user1변수에 저장합니다.val updatedProfile = userProfile + ...: 새로운 키-값 쌍을 추가하여 업데이트된 맵을 생성합니다.println(updatedProfile): 전체 맵을 출력하여 현재 상태를 확인합니다.- 올바른 코드:
- 올바른 코드:
- 맵은 키-값 쌍을 효율적으로 관리하는 자료구조로, 실무에서 널리 사용됩니다.
- 각 키는 고유해야 하며, 값을 통해 데이터에 쉽게 접근할 수 있습니다.
- 실전에서는 장바구니, 사용자 설정 등 다양한 경우에 유용합니다.
- 다음에는 리스트(List)와 같은 다른 자료구조에 대해 학습하는 것을 추천합니다.
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니 구현
쇼핑몰에서 장바구니에 담긴 상품과 수량을 관리할 때 맵을 사용할 수 있습니다.
// 장바구니 초기화
var cart = Map[String, Int]()
// 상품 추가
cart += ("apple" -> 2) // 사과 2개
cart += ("banana" -> 3) // 바나나 3개
// 장바구니 출력
println(cart)
상황 설명: 사용자가 장바구니에 사과와 바나나를 담을 때, 각 상품의 이름을 키로, 수량을 값으로 하여 맵에 저장합니다.
예제 2: 사용자 설정 관리
사용자 설정을 저장하는 데 맵을 활용할 수 있습니다.
// 사용자 설정 초기화
val userSettings = Map("theme" -> "dark", "notifications" -> "enabled")
// 설정 변경
val updatedSettings = userSettings + ("language" -> "Korean")
// 설정 출력
println(updatedSettings)
상황 설명: 사용자의 어플리케이션 설정을 맵에 저장하고, 필요 시 새로운 설정을 추가하거나 변경하는 데 유용합니다.
5. 흔한 실수와 주의사항
실수 1: 키 중복
val myMap = Map("key1" -> "value1", "key1" -> "value2") // 마지막 값이 저장됨
val myMap = Map("key1" -> "value1", "key2" -> "value2") // 서로 다른 키 사용
실수 2: 키 존재 여부 확인
val value = myMap("nonExistentKey") // 예외 발생
val value = myMap.get("nonExistentKey").getOrElse("default") // 기본값 사용