컬렉션의 filter, map, find
표준 라이브러리 함수와 람다를 사용해 컬렉션을 변환하고 필터링해 보세요.
컬렉션의 filter, map, find은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
세 가지 핵심 함수
filter는 조건자와 일치하는 요소를 유지합니다. map은 각 요소를 변환합니다. find는 일치하는 첫 번째 요소를 반환합니다(없으면 널). 이 세 함수만으로도 컬렉션 처리의 대부분을 해결할 수 있습니다.
filter 기초
filter는 조건자가 true인 요소만 포함하는 새 목록을 반환합니다.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens) // [2, 4, 6]
}map 기초
map은 크기가 같고 각 요소가 람다에 의해 변환된 새 목록을 반환합니다.
fun main() {
val nums = listOf(1, 2, 3)
val squares = nums.map { it * it }
println(squares) // [1, 4, 9]
}find 기초
find는 조건자와 일치하는 첫 번째 요소를 반환하고, 일치하는 요소가 없으면 널을 반환합니다.
fun main() {
val words = listOf("apple", "banana", "cherry")
val match = words.find { it.startsWith("b") }
println(match) // banana
}filter와 map 연결
점 표기법으로 두 함수를 결합하여 표현력 있는 데이터 처리 흐름을 만들 수 있습니다.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filter { it % 2 == 1 }.map { it * 10 }
println(result) // [10, 30, 50]
}데이터 클래스 필터링
filter와 map은 데이터 클래스 인스턴스의 컬렉션에서 특히 유용합니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Ana", 17), User("Ben", 25), User("Cal", 31))
val adultNames = users.filter { it.age >= 18 }.map { it.name }
println(adultNames) // [Ben, Cal]
}find와 first 비교
find는 널 허용 값을 반환하지만 first { ... }는 일치하는 요소가 없으면 예외를 발생시킵니다. 선택적인 일치 결과에는 find를 사용하십시오.
fun main() {
val nums = listOf(1, 2, 3)
println(nums.find { it > 10 }) // null
// nums.first { it > 10 } // throws NoSuchElementException
println(nums.firstOrNull { it > 10 }) // null (alias of find)
}filterNot과 filterNotNull
filterNot은 조건자의 결과를 반대로 바꿉니다. filterNotNull은 널 허용 값 목록에서 널 항목을 제거합니다.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it % 2 == 0 }) // [1, 3]
val maybe: List<String?> = listOf("a", null, "b", null, "c")
println(maybe.filterNotNull()) // [a, b, c]
}mapNotNull
mapNotNull은 변환한 다음 널을 제거하므로 구문 분석에 유용합니다.
fun main() {
val raw = listOf("1", "two", "3", "four")
val numbers = raw.mapNotNull { it.toIntOrNull() }
println(numbers) // [1, 3]
}실전 데이터 처리 흐름
filter, map, 마지막 축약 연산을 결합한 간단한 예입니다.
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Pen", 1.0, true),
Product("Book", 12.0, false),
Product("Lamp", 25.0, true)
)
val total = products
.filter { it.inStock }
.map { it.price }
.sum()
println("Available total: $total") // 26.0
}연산 선택하기
부분집합이 필요하면 filter, 변환하려면 map, 선택적인 단일 일치 결과가 필요하면 find를 사용하고, 필요할 때 이들을 연결하십시오.
fun main() {
val words = listOf("alpha", "beta", "gamma", "delta")
println(words.filter { it.length == 5 }) // [alpha, gamma, delta]
println(words.map { it.uppercase() }) // [ALPHA, BETA, GAMMA, DELTA]
println(words.find { it.endsWith("ta") }) // beta
}빠른 확인
람다로 변환한 요소를 포함하는 새 컬렉션을 반환하는 함수는 무엇입니까?
복습
filter는 선택하고, map은 변환하며, find는 첫 번째 일치 항목을 찾습니다(없으면 널). 이들을 데이터 처리 흐름에서 자유롭게 결합하고, 선택적 값을 처리할 때는 mapNotNull과 filterNotNull을 사용하십시오.
자주 묻는 질문
“컬렉션의 filter, map, find” 강의는 무료인가요?
네 — “컬렉션의 filter, map, find” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“컬렉션의 filter, map, find”에서 뭘 배우나요?
표준 라이브러리 함수와 람다를 사용해 컬렉션을 변환하고 필터링해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“컬렉션의 filter, map, find” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 람다란 무엇인가요? 문법과 타입
- 함수에 람다 전달하기
- it: 암시적 매개변수
- 컬렉션의 filter, map, find