Kotlin 컬렉션과 배열 (Collections and Arrays in Kotlin)
컬렉션 (Collections)
Kotlin은 다양한 컬렉션 타입을 제공하며, 크게 리스트(List), 집합(Set), 맵(Map)으로 나눌 수 있습니다.
리스트 (List)
리스트는 순서가 있는 요소들의 모음입니다. List는 불변 리스트이고, MutableList는 가변 리스트입니다.
리스트 예제:
val immutableList: List<String> = listOf("Apple", "Banana", "Cherry")
val mutableList: MutableList<String> = mutableListOf("Apple", "Banana", "Cherry")
fun main() {
    // 불변 리스트
    println(immutableList)  // 출력: [Apple, Banana, Cherry]
    // 가변 리스트에 요소 추가
    mutableList.add("Date")
    println(mutableList)  // 출력: [Apple, Banana, Cherry, Date]
}
집합 (Set)
집합은 순서가 없고 중복을 허용하지 않는 요소들의 모음입니다. Set은 불변 집합이고, MutableSet은 가변 집합입니다.
집합 예제:
val immutableSet: Set<String> = setOf("Apple", "Banana", "Cherry")
val mutableSet: MutableSet<String> = mutableSetOf("Apple", "Banana", "Cherry")
fun main() {
    // 불변 집합
    println(immutableSet)  // 출력: [Apple, Banana, Cherry]
    // 가변 집합에 요소 추가
    mutableSet.add("Date")
    println(mutableSet)  // 출력: [Apple, Banana, Cherry, Date]
}
맵 (Map)
맵은 키-값 쌍으로 이루어진 컬렉션입니다. Map은 불변 맵이고, MutableMap은 가변 맵입니다.
맵 예제:
val immutableMap: Map<String, Int> = mapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
val mutableMap: MutableMap<String, Int> = mutableMapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
fun main() {
    // 불변 맵
    println(immutableMap)  // 출력: {Apple=1, Banana=2, Cherry=3}
    // 가변 맵에 요소 추가
    mutableMap["Date"] = 4
    println(mutableMap)  // 출력: {Apple=1, Banana=2, Cherry=3, Date=4}
}
배열 (Arrays)
Kotlin에서 배열은 Array 클래스를 사용하여 정의합니다. 배열은 고정된 크기를 가지며, 동일한 타입의 요소를 포함합니다.
배열 예제:
val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)
fun main() {
    // 배열 요소 접근
    println(numbers[0])  // 출력: 1
    // 배열 요소 변경
    numbers[0] = 10
    println(numbers[0])  // 출력: 10
    // 배열 순회
    for (num in numbers) {
        println(num)
    }
}
컬렉션 함수 (Collection Functions)
Kotlin은 컬렉션을 쉽게 다룰 수 있도록 다양한 유틸리티 함수를 제공합니다.
컬렉션 함수 예제:
val numbers = listOf(1, 2, 3, 4, 5)
fun main() {
    // filter: 조건에 맞는 요소를 필터링
    val evenNumbers = numbers.filter { it % 2 == 0 }
    println(evenNumbers)  // 출력: [2, 4]
    // map: 각 요소에 함수를 적용
    val doubled = numbers.map { it * 2 }
    println(doubled)  // 출력: [2, 4, 6, 8, 10]
    // reduce: 요소들을 축소하여 단일 값 생성
    val sum = numbers.reduce { acc, num -> acc + num }
    println(sum)  // 출력: 15
}
Kotlin의 컬렉션과 배열을 이해하고 활용하면 데이터를 더욱 효율적으로 관리하고 처리할 수 있습니다.
