Kotlin 문법 - it, .map, .filter

느린달팽이·2025년 10월 13일

코틀린 복습

목록 보기
22/25

Kotlin에서 컬렉션(List, Map, Set 등)을 다룰 때 자주 사용하는 함수형 고차함수(Higher-Order Functions) 들이 있습니다.
그중에서도 map, filter, 그리고 람다식의 기본 매개변수 it 은
가장 자주 등장하는 핵심 문법이다.

it — 람다식의 기본 매개변수

람다식에서 매개변수가 하나뿐일 때,

그 값을 직접 이름 붙이지 않아도 자동으로 it 으로 참조할 수 있습니다.

numbers.map { it * 2 }

위 코드는 아래와 완전히 동일합니다 👇

numbers.map { number -> number * 2 }

즉, it은 “현재 처리 중인 요소”를 나타내는 기본 이름이에요.

별도의 변수명을 쓰지 않아도 간단하게 표현할 수 있다는 게 장점입니다.


.map() — 리스트 변환 (Transformation)

리스트의 각 요소를 변환하여 새로운 리스트를 만듭니다.

  • 기존 리스트는 변경되지 않습니다.
  • 각 요소에 변환 함수(람다식) 을 적용합니다.
개념설명
동작list.map { it * 2 } → 모든 요소에 *2 적용
반환값변환된 새로운 리스트
원본변경되지 않음

한 줄 요약:

map은 “리스트의 모든 요소에 어떤 함수를 적용해서 변환한 결과를 리턴”합니다.


.filter() — 조건 필터링 (Filtering)

조건식을 만족하는 요소만 걸러서 새로운 리스트로 반환합니다.

개념설명
동작list.filter { it % 2 == 0 } → 짝수만 추출
반환값조건을 만족하는 요소들만 담은 리스트
원본변경되지 않음

한 줄 요약:

filter는 “조건을 통과한 요소만 남기는 함수”입니다.


체이닝 (Chaining)

mapfilter는 함께 이어서 쓸 수 있습니다.

이걸 함수 체이닝(Function Chaining) 이라고 부르며,

중간 리스트를 만들지 않고 한 줄로 연속적인 변환 과정을 표현할 수 있습니다.

val result = numbers
    .filter { it > 3 }   // 3보다 큰 숫자만 필터링 → [4, 5, 6, 7, 8]
    .map { it * 10 }     // 각 숫자에 10을 곱함 → [40, 50, 60, 70, 80]
    .take(3)             // 앞에서 3개만 가져옴 → [40, 50, 60]

이런 식으로 코드를 위에서 아래로 자연스럽게 읽을 수 있어

for문보다 훨씬 간결하고 가독성이 좋아집니다.


핵심 정리표

함수역할반환값예시
map()각 요소를 변환변환된 리스트list.map { it * 2 }
filter()조건에 맞는 요소만 추출필터링된 리스트list.filter { it % 2 == 0 }
take(n)앞에서 n개만 추출잘린 리스트list.take(3)
it람다식의 기본 매개변수현재 요소{ println(it) }

최종 예제 코드

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8)

    // 1️⃣ map — 리스트의 각 요소를 변환 (Transformation)
    val doubled = numbers.map { it * 2 }
    println("두 배가 된 숫자들: $doubled") // [2, 4, 6, 8, 10, 12, 14, 16]

    // 2️⃣ filter — 조건을 만족하는 요소만 남김 (Filtering)
    val evens = numbers.filter { it % 2 == 0 }
    println("짝수들: $evens") // [2, 4, 6, 8]

    // 3️⃣ 체이닝 — filter + map + take
    val result = numbers
        .filter { it > 3 }   // [4, 5, 6, 7, 8]
        .map { it * 10 }     // [40, 50, 60, 70, 80]
        .take(3)             // [40, 50, 60]

    println("최종 결과: $result")
}

✅ 마무리 요약

  • it 👉 현재 요소를 가리키는 기본 변수
  • .map() 👉 변환 (Transformation)
  • .filter() 👉 선택 (Filtering)
  • 여러 함수를 체이닝하면 가독성 높은 “데이터 처리 파이프라인” 완성
profile
한걸음이라도 제대로... 쓰임있는 앱을 만들자

0개의 댓글