Filtrowanie i mapowanie
Przekształcaj kolekcje
Filtrowanie i mapowanie to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Przekształcanie kolekcji
Kolekcje Kotlinu oferują bogaty zestaw operacji funkcyjnych. Dwie z najczęściej używanych to filter (wybiera elementy) i map (przekształca elementy). Zwracają one nowe kolekcje i nigdy nie modyfikują oryginalnej.
Funkcja filter
filter pozostawia tylko elementy spełniające predykat, zwracając nową listę.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)
}filterNot i filterNotNull
filterNot pozostawia elementy, które NIE pasują. filterNotNull usuwa elementy null i zwraca listę bez wartości null.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it > 2 })
val withNulls = listOf(1, null, 3, null)
println(withNulls.filterNotNull())
}filterIndexed
filterIndexed udostępnia w predykacie zarówno indeks, jak i wartość.
fun main() {
val letters = listOf("a", "b", "c", "d")
val result = letters.filterIndexed { index, _ -> index % 2 == 0 }
println(result)
}Funkcja map
map stosuje przekształcenie do każdego elementu i zwraca nową listę wyników. Typ wyniku może różnić się od typu wejściowego.
fun main() {
val numbers = listOf(1, 2, 3)
val squares = numbers.map { it * it }
println(squares)
}Mapowanie na inny typ
map może zmieniać typ elementów, na przykład przekształcać liczby w ciągi znaków.
fun main() {
val numbers = listOf(1, 2, 3)
val labels = numbers.map { "Item $it" }
println(labels)
}mapIndexed
mapIndexed udostępnia indeks razem z każdym elementem, dzięki czemu można użyć pozycji podczas przekształcania.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
val numbered = fruits.mapIndexed { i, fruit -> "${i + 1}. $fruit" }
numbered.forEach { println(it) }
}mapNotNull
mapNotNull przekształca każdy element i usuwa wszystkie wyniki, które są równe null. To przejrzysty sposób na połączenie mapowania i filtrowania.
fun main() {
val strings = listOf("1", "two", "3", "four")
val numbers = strings.mapNotNull { it.toIntOrNull() }
println(numbers)
}Łączenie filter i map
Te operacje naturalnie się uzupełniają. Typowy wzorzec polega na wcześniejszym filtrowaniu, a następnie mapowaniu elementów, które pozostały.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val result = numbers
.filter { it % 2 == 0 }
.map { it * 10 }
println(result)
}Operacje nie modyfikują danych
Zarówno filter, jak i map zwracają zupełnie nowe listy. Oryginalna kolekcja pozostaje niezmieniona, dzięki czemu kod jest bezpieczniejszy i łatwiejszy do zrozumienia.
fun main() {
val original = listOf(1, 2, 3)
val doubled = original.map { it * 2 }
println("Original: $original")
println("Doubled: $doubled")
}Filtrowanie i mapowanie w praktyce
Razem filter i map pozwalają deklaratywnie wyrażać potoki danych: opisywać, CO chcemy uzyskać, a nie JAK wykonywać pętlę. Jest to czytelniejsze niż ręczne pętle for ze śledzeniem indeksów.
Szybki test
Jaka jest różnica między filter a map?
Podsumowanie
Nauczyli się Państwo wybierać elementy za pomocą filter (oraz jego wariantów: filterNot, filterIndexed, filterNotNull) i przekształcać je za pomocą map (oraz mapIndexed, mapNotNull). Można je bezproblemowo łączyć, a operacje te nigdy nie modyfikują źródła. Następnie uporządkują Państwo dane za pomocą grupowania i partycjonowania.
Często zadawane pytania
Czy lekcja „Filtrowanie i mapowanie” jest bezpłatna?
Tak — pełny tekst „Filtrowanie i mapowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Filtrowanie i mapowanie”?
Przekształcaj kolekcje Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Filtrowanie i mapowanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Filtrowanie i mapowanie
- Grupowanie i partycjonowanie
- Agregacja
- Tworzenie map i spłaszczanie