0Pricing
Kotlin Academy · Lekcja

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

  1. Filtrowanie i mapowanie
  2. Grupowanie i partycjonowanie
  3. Agregacja
  4. Tworzenie map i spłaszczanie
← Powrót do Kotlin Academy