[Kotlin] 5. 컬렉션과 함수형 프로그래밍

2024. 11. 22. 02:10·프로그래밍 언어/Kotlin
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
'프로그래밍 언어/Kotlin' 카테고리의 다른 글
  • [Kotlin] 7. 코틀린의 코루틴과 비동기 프로그래밍
  • [Kotlin] 6. 코틀린 확장 함수와 표준 라이브러리 활용
  • [Kotlin] 4. 클래스와 객체
  • [Kotlin] 3. 조건문과 반복문
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    명령어
    티스토리챌린지
    반복자
    42서울
    데이터패스
    오블완
    추가 문제
    C++
    자바
    컴퓨터 구조 및 설계
    코틀린
    자료구조
    리눅스
    컴퓨터구조
    메모리 계층 구조
    백준
    사설 문제
    컴공 포트폴리오
    상속
    단일 사이클
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[Kotlin] 5. 컬렉션과 함수형 프로그래밍
상단으로

티스토리툴바