본문 바로가기
Language/Kotlin

코틀린의 함수형 콜렉션 연산

by 시니성 2023. 8. 29.

코틀린은 강력한 함수형 프로그래밍 기능을 지원합니다. 여기서는 map(), filter(), any(), forEach() 네 가지 기본 연산을 다룰 예정입니다.


1. map()

  • 설명: map()은 콜렉션의 각 요소를 변환하기 위해 사용됩니다. 주어진 함수를 각 요소에 적용하여 결과 콜렉션을 생성합니다.
  • 시나리오: 각 숫자를 제곱한 결과를 얻고 싶을 때
val numbers = listOf(1, 2, 3, 4, 5)

// map()을 사용하여 각 숫자를 제곱하기
val squaredNumbers = numbers.map { it * it }

println(squaredNumbers) // [1, 4, 9, 16, 25]

2. filter()

  • 설명: filter()는 주어진 조건에 맞는 요소만 포함하는 새로운 콜렉션을 반환합니다.
  • 시나리오: 짝수만 골라내고 싶을 때
val numbers = listOf(1, 2, 3, 4, 5)

// filter()을 사용하여 짝수만 골라내기
val evenNumbers = numbers.filter { it % 2 == 0 }

println(evenNumbers) // [2, 4]

3. any()

  • 설명: any()는 주어진 조건을 만족하는 요소가 존재하는지 확인합니다. 하나라도 조건을 만족하면 true를 반환합니다.
  • 시나리오: 5보다 큰 숫자가 있는지 확인할 때
val numbers = listOf(1, 2, 3, 4, 5)

// any()를 사용하여 5보다 큰 숫자가 있는지 확인하기
val hasNumberGreaterThan5 = numbers.any { it > 5 }

println(hasNumberGreaterThan5) // false

4. forEach()

  • 설명: forEach()는 콜렉션의 모든 요소에 주어진 함수를 적용합니다. 주로 요소들을 순회하며 특정 작업을 수행하고 싶을 때 사용됩니다.
  • 시나리오: 각 숫자를 출력하고 싶을 때
val numbers = listOf(1, 2, 3, 4, 5)

// forEach()를 사용하여 각 숫자 출력하기
numbers.forEach { println(it) }

연계하여 사용하기

콜렉션 연산은 종종 함께 사용되어 더 복잡한 작업을 수행합니다.

시나리오: 10보다 작은 숫자 중 짝수만을 찾아 그 제곱의 결과를 출력하고 싶을 때

val numbers = listOf(1, 2, 3, 10, 12, 4, 5)

// filter와 map 그리고 forEach를 함께 사용하기
numbers.filter { it < 10 }
       .filter { it % 2 == 0 }
       .map { it * it }
       .forEach { println(it) }

// 출력 결과
// 4
// 16

위 코드에서는 먼저 10보다 작은 숫자를 찾아내고(filter), 그 중에서 짝수만을 골라낸 후(filter), 해당 숫자를 제곱하고(map), 마지막으로 그 결과를 출력하였습니다(forEach).


이러한 함수들을 잘 조합하면 강력한 데이터 변환 및 처리를 짧고 간결한 코드로 수행할 수 있습니다. 기초적인 함수들의 조합만으로도 복잡한 로직을 구현하는 것이 가능해집니다.