서론
코딩 테스트에서 자주 활용되는 filter() 함수에 대해 정리해보려고 한다. 코테 문제 풀이 시 자주 사용되는 함수이니 알아두면 도움이 될 거라고 생각한다.
filter() 함수?
filter() 함수는 컬렉션(배열, 리스트) 등에서 조건을 만족하는 모든 요소들을 필터링하여 새로운 컬렉션을 반환하는 함수이다. 이 함수는 람다식을 인자로 받아 각 요소를 평가하고, 조건을 만족하는 요소들만을 포함하는 새로운 컬렉션을 생성한다.
보통, 주어진 조건을 만족하는 요소를 선택적으로 추출할 때 자주 사용된다. 예를 들면, 특정 조건을 만족하는 숫자, 문자열 또는 사용자 정의 객체를 선택하고자 할 때 사용할 수 있다.
특징
- 사용 방법 : filter() 함수는 컬렉션에 대해 호출되며, 람다식을 인자로 받는다. 이 람다식은 각 요소에 대해 평가되며 조건을 만족하는 새로운 컬렉션에 포함된다.
- 람다식 : filter() 함수의 람다식은 각 요소를 대상으로 평가된다. 람다식은 Boolean 값을 반환해야 하며, 조건에 따라 true/false 를 반환해야 한다.
- 새로운 컬렉션 반환 : filter() 함수는 원본 컬렉션을 변경하지 않고 새로운 컬렉션으로 반환한다. 이 새로운 컬렉션에는 조건을 만족하는 요소들만 포함된다.
- 원본 컬렉션 유지 : filter() 함수를 호출한 원본 컬렉션은 변경되지 않는다. 필요에 따라 결과를 저장하거나 사용할 수 있다.
예제
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
// 짝수만을 필터링하여 새로운 리스트 생성
val evenNumbers = numbers.filter { it % 2 == 0 }
println("원본 리스트: $numbers")
println("짝수만을 포함하는 리스트: $evenNumbers")
}
위 예제는 1~10 까지의 숫자로 이루어진 리스트에서 짝수만을 필터링하여 새로운 리스트를 생성하는 예제이다. 위처럼 filter() 함수를 통해 쉽게 원하는 요소만을 선택할 수 있다.