728x90
반응형
이전 글에서는 코틀린의 클래스와 객체를 다뤘습니다. 이번에는 코틀린의 컬렉션(List, Set, Map)과 함수형 프로그래밍의 핵심인 람다식과 고차 함수를 배워 보겠습니다.
1. 컬렉션(Collection)
코틀린의 컬렉션은 크게 읽기 전용과 변경 가능으로 나뉩니다. 컬렉션에는 List, Set, Map이 포함됩니다.
(1) 리스트(List)
읽기 전용 리스트
listOf로 선언하며, 요소를 변경할 수 없습니다.
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // "Apple"
println(fruits.size) // 3
변경 가능한 리스트
mutableListOf로 선언하며, 요소를 추가, 삭제, 변경할 수 있습니다.
val fruits = mutableListOf("Apple", "Banana")
fruits.add("Cherry") // 요소 추가
fruits.remove("Banana") // 요소 삭제
fruits[0] = "Grapes" // 요소 변경
println(fruits) // [Grapes, Cherry]
(2) 집합(Set)
읽기 전용 집합
setOf는 중복을 허용하지 않는 읽기 전용 집합을 만듭니다.
val numbers = setOf(1, 2, 3, 2, 1)
println(numbers) // [1, 2, 3]
변경 가능한 집합
mutableSetOf로 선언하여 추가, 삭제가 가능합니다.
val numbers = mutableSetOf(1, 2, 3)
numbers.add(4) // 추가
numbers.remove(2) // 삭제
println(numbers) // [1, 3, 4]
(3) 맵(Map)
읽기 전용 맵
mapOf는 키-값 쌍으로 이루어진 읽기 전용 맵을 만듭니다.
val ages = mapOf("Alice" to 25, "Bob" to 30)
println(ages["Alice"]) // 25
변경 가능한 맵
mutableMapOf로 선언하여 요소를 추가, 삭제, 변경할 수 있습니다.
val ages = mutableMapOf("Alice" to 25)
ages["Bob"] = 30 // 추가
ages.remove("Alice") // 삭제
println(ages) // {Bob=30}
2. 함수형 프로그래밍
코틀린은 함수형 프로그래밍을 지원합니다. 핵심 요소는 람다식과 고차 함수입니다.
(1) 람다식(Lambda Expression)
람다식은 이름이 없는 함수입니다. val에 저장하거나 함수의 매개변수로 전달할 수 있습니다.
val square = { number: Int -> number * number }
println(square(5)) // 25
축약형
매개변수가 하나일 경우, it 키워드를 사용해 간결하게 작성할 수 있습니다.
val double = { it: Int -> it * 2 }
println(double(3)) // 6
(2) 고차 함수(Higher-Order Function)
고차 함수는 다른 함수를 매개변수로 받거나 반환값으로 반환하는 함수입니다.
fun applyOperation(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val sum = applyOperation(3, 5) { x, y -> x + y }
println(sum) // 8
(3) 컬렉션과 고차 함수
컬렉션에서 고차 함수를 사용하면 데이터를 더 간단히 처리할 수 있습니다.
map
모든 요소를 변환합니다.
val numbers = listOf(1, 2, 3, 4)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // [1, 4, 9, 16]
filter
조건을 만족하는 요소만 남깁니다.
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // [2, 4]
reduce
모든 요소를 누적하여 하나의 값으로 만듭니다.
val numbers = listOf(1, 2, 3, 4)
val sum = numbers.reduce { acc, number -> acc + number }
println(sum) // 10
forEach
각 요소를 순회하며 실행합니다.
val fruits = listOf("Apple", "Banana", "Cherry")
fruits.forEach { println(it) }
728x90
반응형
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] 7. 코틀린의 코루틴과 비동기 프로그래밍 (0) | 2024.11.24 |
---|---|
[Kotlin] 6. 코틀린 확장 함수와 표준 라이브러리 활용 (0) | 2024.11.23 |
[Kotlin] 4. 클래스와 객체 (0) | 2024.11.20 |
[Kotlin] 3. 조건문과 반복문 (0) | 2024.11.19 |
[Kotlin] 2. 변수, 자료형, 함수 (1) | 2024.11.18 |