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

Kotlin 컬렉션 기초

Kotlin 컬렉션 기초 — 초급

컬렉션 기초

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

Kotlin에서 컬렉션은 데이터를 효율적으로 관리하고 처리하기 위한 필수적인 도구입니다. 실무에서 우리는 종종 여러 개의 데이터를 다루어야 하는 경우가 많으며, 이때 컬렉션을 사용하면 데이터를 그룹화하고, 필터링하며, 변환하는 등의 작업을 간편하게 수행할 수 있습니다. 만약 컬렉션을 모르고 단순 변수로만 데이터를 관리한다면, 복잡한 로직을 구현하는 데 많은 시간과 노력을 들여야 하고, 코드의 가독성 및 유지보수성도 떨어지게 됩니다.

예를 들어, 쇼핑몰에서 고객의 장바구니에 담긴 상품을 관리해야 할 때, 각각의 상품을 개별 변수로 관리한다면 나중에 상품의 추가, 삭제, 수량 조절 등을 구현하는 것이 매우 복잡해질 것입니다. 하지만 컬렉션을 사용하면 이러한 작업을 훨씬 더 쉽게 처리할 수 있습니다.

2. 핵심 개념 설명

컬렉션은 여러 개의 데이터를 담을 수 있는 객체입니다. Kotlin에서는 주로 List, Set, Map 등의 컬렉션 타입을 제공합니다.

용어설명
List순서가 있는 데이터 집합. 중복된 값을 허용합니다.
Set순서가 없는 데이터 집합. 중복된 값을 허용하지 않습니다.
Map키-값 쌍으로 데이터를 저장하는 컬렉션입니다.

이러한 컬렉션은 마치 여러 개의 상자를 가진 서랍처럼 비유할 수 있습니다. List는 상자들이 줄지어 있는 형태로, 순서와 중복을 허용합니다. Set은 중복된 상자는 없고, 순서도 중요하지 않은 상자들의 모음입니다. Map은 키가 있는 각각의 상자에 값이 담긴 형태로, 특정 키를 통해 값을 빠르게 찾을 수 있습니다.

3. 기본 코드 예제

fun main() {
    // List 생성
    val fruits: List<String> = listOf("사과", "바나나", "체리", "사과")

    // List의 요소 출력
    for (fruit in fruits) {
        println(fruit)
    }
}

실행 결과:

사과
바나나
체리
사과
  • val fruits: List<String>: 문자열 타입의 List를 선언합니다.
  • listOf("사과", "바나나", "체리", "사과"): List에 여러 과일 이름을 추가합니다.
  • for (fruit in fruits): List의 각 요소를 반복하여 출력합니다.
  • println(fruit): 현재 요소를 콘솔에 출력합니다.
  • 4. 실전 활용 예제

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

    장바구니에 담긴 상품의 목록을 List로 관리할 수 있습니다.

    fun main() {
        val cart: MutableList<String> = mutableListOf("티셔츠", "바지", "신발")
    
        // 장바구니에 상품 추가
        cart.add("모자")
        
        // 장바구니 출력
        println("장바구니: $cart")
    }

    상황 설명: 사용자가 장바구니에 상품을 추가할 수 있도록 하는 기능을 구현했습니다.

    예제 2: 학생 점수 관리하기

    학생들의 점수를 Set으로 관리하여 중복 점수를 제거할 수 있습니다.

    fun main() {
        val scores: MutableSet<Int> = mutableSetOf(90, 85, 90, 70)
    
        // 점수 추가
        scores.add(95)
        
        // 점수 출력
        println("학생 점수: $scores")
    }

    상황 설명: 학생들의 점수를 중복 없이 관리하고, 추가할 수 있는 기능을 구현했습니다.

    5. 흔한 실수와 주의사항

    실수 1: List에 중복된 값이 필요 없는 경우

    val items = listOf("A", "B", "A") // 중복된 A가 허용됨

    올바른 코드:

    val items = setOf("A", "B", "A") // 중복된 A는 제거됨

    실수 2: Mutable vs Immutable 컬렉션 혼동

    val fruits = listOf("사과", "바나나") // 변경할 수 없는 List
    fruits.add("체리") // 오류 발생

    올바른 코드:

    val fruits = mutableListOf("사과", "바나나") // 변경할 수 있는 List
    fruits.add("체리") // 정상 작동

    6. 정리

  • 컬렉션은 데이터를 효율적으로 관리하는 데 필수적입니다.
  • List, Set, Map을 통해 다양한 형태로 데이터를 저장할 수 있습니다.
  • 실무에서는 장바구니, 점수 관리와 같은 다양한 상황에서 컬렉션을 활용합니다.
  • Mutable과 Immutable의 차이를 이해하고 적절히 사용하는 것이 중요합니다.
  • 다음에 학습하면 좋은 주제:

  • 컬렉션의 고급 기능 (필터링, 변환 등)
  • 컬렉션의 정렬 및 그룹화 방법
  • 고차 함수와 컬렉션의 조합