DeveloPiano

[Kotlin] Map과 MutableMap : 읽기 전용과 변경 가능한 Map의 차이점 본문

Develop/Kotlin

[Kotlin] Map과 MutableMap : 읽기 전용과 변경 가능한 Map의 차이점

DevPi 2024. 11. 14. 11:17
반응형

Kotlin에는 키-값 쌍의 데이터를 저장하고 관리할 수 있는 다양한 컬렉션이 있습니다. 그중에서도 Map과 MutableMap은 데이터를 키-값 쌍으로 저장하며, 둘 다 유사한 구조를 가지지만 변경 가능 여부에 따라 그 역할이 나뉩니다. 이번 포스팅에서는 Map과 MutableMap의 차이점과 사용법에 대해 알아보겠습니다.


1. Map (읽기 전용 Map)

Map은 읽기 전용 컬렉션으로, 데이터를 추가, 수정, 삭제할 수 없습니다. 키-값 쌍을 통해 데이터를 저장하며, 동일한 키를 가질 수 없다는 특징이 있습니다. 동일한 키로 여러 값을 저장하려 하면, 마지막으로 저장된 값이 해당 키의 값이 됩니다.

 

Map 사용법

Map은 mapOf() 함수를 사용하여 쉽게 생성할 수 있습니다.

val readOnlyMap = mapOf("a" to 1, "b" to 2, "c" to 3)

println(readOnlyMap["a"])  // 출력: 1
// readOnlyMap["d"] = 4    // 컴파일 오류: 읽기 전용 Map은 변경 불가

주요 특징

  • 데이터 조회만 가능 : Map은 값 읽기만 가능하며, 수정이나 추가가 불가능합니다.
  • 불변성 : 읽기 전용이므로 데이터가 안전하게 보호됩니다. 따라서 변경할 필요가 없는 데이터를 다룰 때 Map을 사용하는 것이 좋습니다.

2. MutableMap (변경 가능한 Map)

MutableMap은 Map과 달리 데이터 추가, 삭제, 수정이 가능한 컬렉션입니다. 이는 Map과 유사한 구조를 가지지만, 컬렉션을 동적으로 수정할 수 있다는 점에서 다릅니다. mutableMapOf() 함수를 사용하여 생성할 수 있습니다.

 

MutableMap 사용법

val mutableMap = mutableMapOf("a" to 1, "b" to 2, "c" to 3)

mutableMap["d"] = 4        // 값 추가
mutableMap["a"] = 5        // 값 수정
mutableMap.remove("b")     // 값 삭제

println(mutableMap)  // 출력: {a=5, c=3, d=4}

주요 특징

  • 데이터 변경 가능 : MutableMap은 데이터 추가와 수정, 삭제를 모두 허용합니다.
  • 컬렉션 수정 메서드 제공 : put, remove와 같은 메서드를 통해 컬렉션을 쉽게 조작할 수 있습니다.

3. Map과 MutableMap의 주요 함수 비교

함수 Map MutableMap
get(key) 키에 해당하는 값을 반환 키에 해당하는 값을 반환
put(key, value) 사용 불가 키-값 쌍을 추가하거나 수정
remove(key) 사용 불가 특정 키-값 쌍을 제거
containsKey(key) 키가 존재하는지 확 키가 존재하는지 확인

Map과 MutableMap의 주요 함수들을 살펴보면, 읽기 전용 Map에서는 데이터 조회만 가능하고, MutableMap은 추가와 삭제, 수정이 모두 가능하다는 점에서 차이가 있습니다.


4. 언제 Map과 MutableMap을 사용해야 할까?

컬렉션을 선택할 때는 데이터의 변경 가능 여부가 가장 중요한 기준입니다.

  • 읽기 전용 데이터 : 데이터가 한 번 정해진 후 변경되지 않는다면, Map을 사용하는 것이 좋습니다. 이렇게 하면 실수로 데이터를 수정할 가능성을 줄일 수 있습니다.
  • 변경이 필요한 데이터 : 데이터의 추가, 수정, 삭제가 필요한 경우 MutableMap을 사용하여 유연하게 관리할 수 있습니다.

요약

  • Map : 읽기 전용의 키-값 쌍 컬렉션으로 mapOf()를 사용하여 생성합니다. 데이터 조회만 가능하며 추가나 수정이 불가합니다.
  • MutableMap : 키-값 쌍의 데이터를 변경할 수 있는 컬렉션으로 mutableMapOf()를 사용하여 생성합니다. 데이터를 추가, 삭제, 수정할 수 있습니다.

이처럼 Map과 MutableMap은 데이터가 변경될지 여부에 따라 구분하여 사용하는 것이 좋습니다.

반응형