학습
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은 중복을 허용하지 않음을 이해하고 사용해야 합니다.