IMCAT.DEV
로그인 가입
Kotlin 중급 자료구조

Kotlin 컬렉션 API 심화

Kotlin 컬렉션 API 심화 — 중급

Kotlin 컬렉션 API 심화

1. 도입 (왜 배워야 하는가)

Kotlin의 컬렉션 API는 데이터를 효율적으로 관리하고 처리하는 데 필수적인 도구입니다. 실무에서 데이터베이스와의 연동, API 호출 결과의 처리, 사용자 입력 데이터의 관리 등 다양한 상황에서 컬렉션을 사용하게 됩니다. 만약 이 API를 잘 이해하지 못한다면, 데이터의 정렬, 필터링, 변환 등에 있어 비효율적인 코드를 작성하게 되고, 이는 성능 저하 및 유지보수의 어려움으로 이어질 수 있습니다.

2. 핵심 개념 설명

컬렉션은 데이터의 집합을 의미합니다. Kotlin에서는 List, Set, Map과 같은 다양한 컬렉션 타입이 제공됩니다. 각 컬렉션은 특정 용도와 특징을 가지며, 상황에 맞게 선택하여 사용해야 합니다.

용어정의비유
List순서가 있는 데이터의 집합, 중복을 허용책꽂이에 책을 정리하는 것
Set중복을 허용하지 않는 데이터의 집합친구 목록에서 중복된 친구를 제거하는 것
Map키와 값의 쌍으로 이루어진 데이터의 집합전화번호부에서 이름과 전화번호를 연결하는 것

3. 기본 코드 예제

가장 기본적인 List 사용법을 살펴보겠습니다.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5) // 1부터 5까지의 정수를 가진 리스트 생성
    println("원본 리스트: $numbers") // 원본 리스트를 출력

    val doubled = numbers.map { it * 2 } // 각 요소를 2배로 변환
    println("2배로 변환된 리스트: $doubled") // 변환된 리스트를 출력
}

실행 결과:

원본 리스트: [1, 2, 3, 4, 5]
2배로 변환된 리스트: [2, 4, 6, 8, 10]
  • val numbers = listOf(1, 2, 3, 4, 5) : 1부터 5까지의 정수를 가진 리스트를 생성합니다.
  • println("원본 리스트: $numbers") : 생성한 리스트를 출력합니다.
  • val doubled = numbers.map { it * 2 } : 리스트의 각 요소를 2배로 변환하여 새로운 리스트를 생성합니다.
  • println("2배로 변환된 리스트: $doubled") : 변환된 리스트를 출력합니다.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니 구현

    쇼핑몰의 장바구니에서 사용자가 선택한 상품의 가격을 합산하는 상황을 가정해 보겠습니다.

    data class Product(val name: String, val price: Double)
    
    fun main() {
        val cart = listOf(
            Product("사과", 1000.0),
            Product("바나나", 1500.0),
            Product("오렌지", 2000.0)
        )
    
        val totalPrice = cart.sumOf { it.price } // 장바구니의 총 가격 계산
        println("총 가격: $totalPrice 원") // 총 가격 출력
    }

    실행 결과:

    총 가격: 4500.0 원

    예제 2: 중복 제거

    사용자가 입력한 이메일 목록에서 중복된 이메일을 제거하는 경우입니다.

    fun main() {
        val emails = listOf("[email protected]", "[email protected]", "[email protected]", "[email protected]")
        val uniqueEmails = emails.toSet() // Set을 사용해 중복 제거
        println("중복 제거된 이메일: $uniqueEmails") // 중복 제거된 이메일 출력
    }

    실행 결과:

    중복 제거된 이메일: [[email protected], [email protected], [email protected]]

    5. 흔한 실수와 주의사항

    실수 1: MutableList와 List의 혼용

    val numbers: List<Int> = mutableListOf(1, 2, 3) // List로 선언했지만 mutableListOf를 사용
    numbers.add(4) // 오류 발생: add는 MutableList에만 존재하는 메소드

    올바른 코드:

    val numbers: MutableList<Int> = mutableListOf(1, 2, 3)
    numbers.add(4) // 정상 동작

    실수 2: Set의 특징 오해

    val set = setOf(1, 2, 3, 3, 2) // 중복된 값이 있는 Set 생성
    println(set) // [1, 2, 3] - 중복이 제거된 결과

    Set은 중복을 허용하지 않음을 이해하고 사용해야 합니다.

    6. 정리

  • Kotlin 컬렉션 API는 데이터 관리에 필수적입니다.
  • List, Set, Map의 특징과 용도를 이해하는 것이 중요합니다.
  • 실무에서 자주 사용하는 패턴을 익히면 효율적인 프로그래밍이 가능합니다.
  • 다음 주제로는 Kotlin의 고차 함수, 람다 표현식 등을 배워보는 것을 추천합니다.