학습
Kotlin 기본 자료구조 (List, Set, Map)
Kotlin 기본 자료구조 (List, Set, Map) — 초급
기본 자료구조 (List, Set, Map)
1. 도입 (왜 배워야 하는가)
프로그래밍에서 자료구조는 데이터를 어떻게 저장하고, 관리하며, 처리할지를 결정합니다. 특히 Kotlin에서는 List, Set, Map과 같은 기본 자료구조를 통해 데이터를 효과적으로 다룰 수 있습니다. 이러한 자료구조를 이해하지 못하면 데이터를 비효율적으로 처리하거나, 필요할 때 원하는 형태로 데이터를 얻지 못할 수 있습니다.
예를 들어, 쇼핑몰에서 장바구니 기능을 구현할 때, List를 사용하여 상품 목록을 저장하고, Set을 사용하여 중복된 상품을 방지하며, Map을 사용하여 상품의 가격과 이름을 연결할 수 있습니다. 이러한 구조가 없다면 데이터를 관리하는 데 불필요한 복잡성을 초래하게 됩니다.
2. 핵심 개념 설명
- List: 순서가 있는 데이터의 집합입니다. 동일한 값을 여러 번 가질 수 있으며, 인덱스를 통해 접근합니다.
- Set: 중복을 허용하지 않는 데이터의 집합입니다. 순서가 없으며, 고유한 값들로 구성됩니다.
- Map: 키와 값의 쌍으로 이루어진 데이터 구조입니다. 키를 통해 값에 빠르게 접근할 수 있습니다.
- 비유: 책장이 여러 권의 책을 정렬해 놓은 것처럼, List는 순서대로 정리된 데이터입니다.
- 비유: 친구 목록처럼, 같은 친구가 여러 번 등장하지 않도록 중복을 제거한 것입니다.
- 비유: 전화번호부처럼, 이름이라는 키를 통해 전화번호라는 값을 찾는 것입니다.
| 자료구조 | 특징 | 사용 예시 |
|---|---|---|
| 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. 흔한 실수와 주의사항
val fruits = listOf("사과", "바나나", "사과")
// fruits에 중복된 "사과"가 존재하지만 List는 중복을 허용하므로, 제거하려면 별도의 로직이 필요합니다.
val uniqueFruits = setOf("사과", "바나나")
// uniqueFruits.contains("사과") // true
- Set은 중복을 허용하지 않으므로 존재 여부를 확인할 때 주의해야 합니다.
val fruitPrices = mapOf("사과" to 1000)
println(fruitPrices["바나나"]) // null이 출력됨
- 키가 존재하지 않을 경우 null이 반환되므로, 존재 여부를 항상 확인해야 합니다.
6. 정리
- List, Set, Map은 Kotlin에서 데이터를 다루기 위한 기본적인 자료구조입니다.
- List는 순서가 있으며 중복을 허용하고, Set은 중복이 없으며, Map은 키-값 쌍으로 구성됩니다.
- 실무에서는 쇼핑몰 장바구니, 고유 태그 관리, 사용자 정보 저장 등 다양한 상황에서 활용됩니다.
- 자료구조를 잘 이해하지 못하면 비효율적인 데이터 처리가 발생할 수 있습니다.
- 컬렉션의 고급 기능 (filter, map, reduce)
- Kotlin에서의 Null 안전성
- 데이터 클래스와 함께하는 자료구조 활용