IMCAT.DEV
로그인 가입
Scala 입문 자료구조

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)

    코드 한 줄씩 동작 설명:

    1. val userProfile = Map(...): 세 개의 키-값 쌍을 가진 맵을 생성합니다.
    2. val user1 = userProfile("user1"): "user1" 키에 해당하는 값을 조회하여 user1 변수에 저장합니다.
    3. val updatedProfile = userProfile + ...: 새로운 키-값 쌍을 추가하여 업데이트된 맵을 생성합니다.
    4. println(updatedProfile): 전체 맵을 출력하여 현재 상태를 확인합니다.
    5. 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") // 마지막 값이 저장됨
    6. 올바른 코드:
    7. val myMap = Map("key1" -> "value1", "key2" -> "value2") // 서로 다른 키 사용

      실수 2: 키 존재 여부 확인

      val value = myMap("nonExistentKey") // 예외 발생
    8. 올바른 코드:
    9. val value = myMap.get("nonExistentKey").getOrElse("default") // 기본값 사용

      6. 정리

    10. 맵은 키-값 쌍을 효율적으로 관리하는 자료구조로, 실무에서 널리 사용됩니다.
    11. 각 키는 고유해야 하며, 값을 통해 데이터에 쉽게 접근할 수 있습니다.
    12. 실전에서는 장바구니, 사용자 설정 등 다양한 경우에 유용합니다.
    13. 다음에는 리스트(List)와 같은 다른 자료구조에 대해 학습하는 것을 추천합니다.