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

Kotlin 기본 자료구조 (List, Set, Map)

Kotlin 기본 자료구조 (List, Set, Map) — 초급

기본 자료구조 (List, Set, Map)

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

프로그래밍에서 자료구조는 데이터를 어떻게 저장하고, 관리하며, 처리할지를 결정합니다. 특히 Kotlin에서는 List, Set, Map과 같은 기본 자료구조를 통해 데이터를 효과적으로 다룰 수 있습니다. 이러한 자료구조를 이해하지 못하면 데이터를 비효율적으로 처리하거나, 필요할 때 원하는 형태로 데이터를 얻지 못할 수 있습니다.

예를 들어, 쇼핑몰에서 장바구니 기능을 구현할 때, List를 사용하여 상품 목록을 저장하고, Set을 사용하여 중복된 상품을 방지하며, Map을 사용하여 상품의 가격과 이름을 연결할 수 있습니다. 이러한 구조가 없다면 데이터를 관리하는 데 불필요한 복잡성을 초래하게 됩니다.

2. 핵심 개념 설명

  • List: 순서가 있는 데이터의 집합입니다. 동일한 값을 여러 번 가질 수 있으며, 인덱스를 통해 접근합니다.
  • - 비유: 책장이 여러 권의 책을 정렬해 놓은 것처럼, List는 순서대로 정리된 데이터입니다.

  • Set: 중복을 허용하지 않는 데이터의 집합입니다. 순서가 없으며, 고유한 값들로 구성됩니다.
  • - 비유: 친구 목록처럼, 같은 친구가 여러 번 등장하지 않도록 중복을 제거한 것입니다.

  • Map: 키와 값의 쌍으로 이루어진 데이터 구조입니다. 키를 통해 값에 빠르게 접근할 수 있습니다.
  • - 비유: 전화번호부처럼, 이름이라는 키를 통해 전화번호라는 값을 찾는 것입니다.

    자료구조특징사용 예시
    List순서가 있고, 중복 가능상품 목록
    Set중복 불가, 순서 없음고유한 태그 목록
    Map키-값 쌍사용자 정보 저장 (ID-이름)

    3. 기본 코드 예제

    List 예제

    fun main() {
        val fruits = listOf("사과", "바나나", "오렌지", "사과") // List 생성
        println(fruits) // 리스트 출력
    }
  • 실행 결과: [사과, 바나나, 오렌지, 사과]
  • 설명:
  • - listOf를 사용해 List를 생성합니다. - List는 중복된 값(사과)을 허용합니다. - println으로 리스트를 출력합니다.

    Set 예제

    fun main() {
        val uniqueFruits = setOf("사과", "바나나", "오렌지", "사과") // Set 생성
        println(uniqueFruits) // 세트 출력
    }
  • 실행 결과: [사과, 바나나, 오렌지]
  • 설명:
  • - setOf를 사용해 Set을 생성합니다. - 중복된 값(사과)이 제거되어 출력됩니다.

    Map 예제

    fun main() {
        val fruitPrices = mapOf("사과" to 1000, "바나나" to 500, "오렌지" to 800) // Map 생성
        println(fruitPrices["사과"]) // 사과 가격 출력
    }
  • 실행 결과: 1000
  • 설명:
  • - mapOf를 사용해 Map을 생성하고, 키-값 쌍을 정의합니다. - fruitPrices["사과"]로 사과의 가격에 접근합니다.

    4. 실전 활용 예제

    1. 쇼핑몰 장바구니 구현

    fun main() {
        val cart = mutableListOf<String>() // 장바구니 리스트 생성
        cart.add("사과") // 장바구니에 사과 추가
        cart.add("바나나") // 장바구니에 바나나 추가
        cart.add("사과") // 중복 추가
        println(cart) // 장바구니 출력
    }
  • 장바구니에서 중복 상품(사과)을 허용하는 경우입니다.
  • 2. 고유 태그 목록 관리

    fun main() {
        val tags = mutableSetOf<String>() // 태그 세트 생성
        tags.add("프로그래밍") // 태그 추가
        tags.add("코틀린") // 태그 추가
        tags.add("프로그래밍") // 중복 추가 시도
        println(tags) // 태그 출력
    }
  • 중복된 태그가 제거되어 출력됩니다.
  • 3. 사용자 정보 저장

    fun main() {
        val userMap = mutableMapOf<String, String>() // 사용자 정보 맵 생성
        userMap["홍길동"] = "010-1234-5678" // 사용자 추가
        userMap["김철수"] = "010-9876-5432" // 사용자 추가
        println(userMap["홍길동"]) // 홍길동의 전화번호 출력
    }
  • 키를 통해 사용자 정보를 쉽게 검색할 수 있습니다.
  • 5. 흔한 실수와 주의사항

  • List에서 중복 제거를 시도할 때:
  •   val fruits = listOf("사과", "바나나", "사과")
      // fruits에 중복된 "사과"가 존재하지만 List는 중복을 허용하므로, 제거하려면 별도의 로직이 필요합니다.
  • Set에서 값을 확인할 때:
  •   val uniqueFruits = setOf("사과", "바나나")
      // uniqueFruits.contains("사과") // true

    - Set은 중복을 허용하지 않으므로 존재 여부를 확인할 때 주의해야 합니다.

  • Map에서 키를 잘못 사용할 때:
  •   val fruitPrices = mapOf("사과" to 1000)
      println(fruitPrices["바나나"]) // null이 출력됨

    - 키가 존재하지 않을 경우 null이 반환되므로, 존재 여부를 항상 확인해야 합니다.

    6. 정리

    1. List, Set, Map은 Kotlin에서 데이터를 다루기 위한 기본적인 자료구조입니다.
    2. List는 순서가 있으며 중복을 허용하고, Set은 중복이 없으며, Map은 키-값 쌍으로 구성됩니다.
    3. 실무에서는 쇼핑몰 장바구니, 고유 태그 관리, 사용자 정보 저장 등 다양한 상황에서 활용됩니다.
    4. 자료구조를 잘 이해하지 못하면 비효율적인 데이터 처리가 발생할 수 있습니다.
    5. 다음에 학습하면 좋은 주제

    6. 컬렉션의 고급 기능 (filter, map, reduce)
    7. Kotlin에서의 Null 안전성
    8. 데이터 클래스와 함께하는 자료구조 활용