관리 메뉴

피터의 개발이야기

[Kotlin] Map 다양한 사용법 본문

Programming/Kotlin

[Kotlin] Map 다양한 사용법

기록하는 백앤드개발자 2024. 7. 9. 10:10
반응형

ㅁ 들어가며

ㅇ Kotlin에서 Map은 키-값 쌍을 저장하는 컬렉션이다. 

ㅇ Map을 사용하면 데이터를 효율적으로 관리하고 검색할 수 있다. 

ㅇ 이 글에서는 Kotlin에서 Map을 생성하고 사용하는 다양한 방법을 알아본다.

ㅇ 함께 보면 좋은 사이트를 참조하여 작성하였다.

 

ㅁ Map 생성

// 불변 Map
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// 가변 Map
val mutableMap = mutableMapOf("key1" to "value1", "key2" to "value2")

// 빈 Map
val emptyMap = emptyMap<String, String>()

 

ㅁ Map 제거

// 생성
val map = mutableMapOf("Chocolate" to 14, "Strawberry" to 9)

// remove
map.remove("Strawberry")

// -=
map -= "Chocolate"

 

ㅁ Map 추가

val mutableMap = mutableMapOf<String, Int>()
// 단건 추가
mutableMap["key1"] = 1
mutableMap.put("key2", 2)
mutableMap += "key3" to 3

// 복수 추가
mutableMap.putAll(setOf("Strawberry" to 3, "Rocky Road" to 2))
mutableMap += mapOf("Maple Walnut" to 1, "Mint Chocolate" to 4)

 

ㅁ Map 값 가져오기

// 대괄호
val value = map["key"]

// getValue 함수
val value = map.getValue("key") // 키가 없으면 예외 발생

// getOrElse 함수
val value = map.getOrElse("key") { defaultValue }

// getOrDefault 함수
val value = map.getOrDefault("key", defaultValue)

 

ㅁ Map 루프문

// for
for ((key, value) in map) {
    println("$key = $value")
}

// forEach
map.forEach { (key, value) -> 
    println("$key = $value")
}

 

ㅁ Map 필터링

// filter
val filteredMap = map.filter { (key, value) -> key.length > 3 && value > 10 }

// filterKeys와 filterValues
val filteredByKeys = map.filterKeys { it.length > 3 }
val filteredByValues = map.filterValues { it > 10 }

 

ㅁ Map 변환

// map
val transformedMap = map.map { (key, value) -> key to value.toString() }.toMap()

// mapKeys와 mapValues
val transformedKeys = map.mapKeys { it.key.toUpperCase() }
val transformedValues = map.mapValues { it.value * 2 }

 

ㅁ Map  데이터 가공

	class shipment(
        var flavor: String = "",
        var quantity: Int = 0
    )

    // kotlin API 방법
    val shipments = listOf(
        shipment("Chocolate", 3),
        shipment("Strawberry", 7),
        shipment("Vanilla", 5),
        shipment("Chocolate", 5),
        shipment("Vanilla", 1),
        shipment("Rocky Road", 10),
    )

    val shipmentInventory = mutableMapOf<String, Int>()

    // for문을 이용하는 방식
    for (shipment in shipments){
        val currentQuantity = shipmentInventory[shipment.flavor] ?: 0
        shipmentInventory[shipment.flavor] = currentQuantity + shipment.quantity
    }

    // groupBy 이용하는 방식 비교
    val shipmenInventory2 = shipments
        .groupBy({ it.flavor }, { it.quantity }) // 데이터 가공할 수 있다.
        .mapValues { it.value.sum() }  // 목록을 단일 합계로 줄인다.

 

ㅁ 마무리

ㅇ Kotlin에서 Map은 강력하고 유연한 데이터 구조다. 

ㅇ 불변 Map과 가변 Map을 상황에 맞게 선택하여 사용할 수 있으며, 다양한 내장 함수를 통해 Map을 효율적으로 조작할 수 있다.

ㅇ Map을 잘 이용하여 복잡한 코딩을 쉽게 처리할 수 있어서, Kotlin에서 매우 자주 사용하게 된다.

 

소스는 여기에...

 

ㅁ 함께 보면 좋은 사이트

Working With Maps in Kotlin

Kotlin Map 다양한 사용법 (mapOf, keys, values, mapKeys, mapValues, toSortedMap, Comparator, getOrPut)

 

반응형
Comments