학습
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. 정리
다음에 학습하면 좋은 주제: