[kotlin] 코틀린에서 콜렉션 타입을 이용한 데이터 그룹화하기

코틀린에서 데이터를 효과적으로 그룹화하고 처리하려면 다양한 콜렉션 타입을 활용할 수 있습니다. 이번 포스트에서는 코틀린의 콜렉션 타입을 이용하여 데이터를 그룹화하고 처리하는 방법에 대해 알아보겠습니다.

1. 리스트 그룹화하기

콜렉션 중에서 리스트를 그룹화하는 방법을 살펴보겠습니다. 리스트를 특정 속성을 기준으로 그룹화하려면 groupBy 함수를 사용할 수 있습니다.

data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(
        User("Alice", 20),
        User("Bob", 25),
        User("Carol", 20)
    )

    val groupedUsers = users.groupBy { it.age }
    println(groupedUsers)
}

위의 예제에서는 사용자를 나이에 따라 그룹화하고 있습니다. groupBy 함수는 지정된 키(여기서는 나이)를 기반으로 리스트를 그룹화하여 Map 형태로 반환합니다.

2. 맵 그룹화하기

리스트가 아닌 맵을 그룹화하는 방법도 있습니다. 맵을 여러 기준에 따라 그룹화하려면 groupBy 함수를 사용할 수 있습니다.

data class Product(val name: String, val category: String)

fun main() {
    val products = mapOf(
        1 to Product("Laptop", "Electronics"),
        2 to Product("Headphones", "Electronics"),
        3 to Product("T-Shirt", "Fashion"),
        4 to Product("Jeans", "Fashion")
    )

    val groupedProducts = products.groupBy { it.value.category }
    println(groupedProducts)
}

위의 예제에서는 제품을 카테고리에 따라 그룹화하고 있습니다. groupBy 함수는 지정된 키(여기서는 카테고리)를 기반으로 맵을 그룹화하여 Map 형태로 반환합니다.

3. 집계 함수 적용하기

그룹화된 데이터에 대해 집계 함수를 적용하여 통계나 요약 정보를 얻을 수 있습니다. 예를 들어, 그룹화된 데이터에서 각 그룹의 요소 수를 구하려면 mapValues 함수와 size 프로퍼티를 사용할 수 있습니다.

fun main() {
    val users = listOf(
        User("Alice", 20),
        User("Bob", 25),
        User("Carol", 20)
    )

    val groupedUserCount = users.groupBy { it.age }.mapValues { it.value.size }
    println(groupedUserCount)
}

위의 예제에서는 나이별 사용자 수를 계산하고 있습니다. groupBy 함수로 그룹화한 후 mapValues 함수를 사용하여 각 그룹의 크기를 계산합니다.

결론

코틀린의 콜렉션 타입을 이용하여 데이터를 그룹화하고 처리하는 방법을 알아보았습니다. 리스트와 맵을 적절히 활용하여 데이터를 다양한 기준에 따라 효과적으로 그룹화하고 원하는 정보를 추출할 수 있습니다.

이상으로 코틀린에서 콜렉션 타입을 이용한 데이터 그룹화하기에 대해 알아보았습니다.

참고문헌: Kotlin - Collections

다른 코틀린 튜토리얼은 여기에서 볼 수 있습니다.