map, filter, forEach
Przekształci Pan/Pani kolekcje za pomocą lambd.
map, filter, forEach to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 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 Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.
Operacje na kolekcjach
Kolekcje Kotlina mają wiele potężnych wbudowanych operacji. Trzy z nich, których będzie Pan/Pani używać bardzo często, to map, filter i forEach.
Pozwalają one przekształcać, wybierać i iterować po danych w jednym czytelnym wierszu, zamiast pisać pętle ręcznie.
map przekształca każdy element
map tworzy nową listę, stosując przekształcenie do każdego elementu.
W lambdzie it oznacza bieżący element. Oryginalna lista pozostaje niezmieniona.
fun main() {
val nums = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
println(doubled)
}map może zmieniać typy
Wynik działania map nie musi mieć tego samego typu co dane wejściowe.
W tym przykładzie zamieniamy listę imion na listę ich długości.
fun main() {
val names = listOf("Ada", "Linus")
val lengths = names.map { it.length }
println(lengths)
}filter zachowuje pasujące elementy
filter zwraca nową listę zawierającą tylko te elementy, dla których lambda zwraca true.
W tym przykładzie zachowujemy tylko liczby parzyste.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens)
}filter na napisach
Warunek może być dowolnym wyrażeniem zwracającym wartość typu Boolean. W tym przykładzie zachowujemy tylko długie słowa.
Elementy, które nie przejdą testu, są po prostu pomijane w wyniku.
fun main() {
val words = listOf("hi", "hello", "hey", "howdy")
val long = words.filter { it.length > 3 }
println(long)
}forEach wykonuje działanie
forEach wykonuje blok kodu dla każdego elementu, ale nie tworzy nowej listy.
Używaj go do efektów ubocznych, takich jak wypisywanie danych lub logowanie.
fun main() {
val fruits = listOf("apple", "banana")
fruits.forEach { println("Fruit: $it") }
}map a forEach
map zwraca przekształconą listę, więc używaj go, gdy potrzebujesz wyniku.
forEach nie zwraca użytecznej wartości, więc używaj go wyłącznie do wykonywania działań. Wybór właściwej operacji pomaga zachować czytelność kodu.
Łączenie operacji
Te operacje zwracają kolekcje, więc można je ze sobą łączyć.
Czytaj kod od lewej do prawej: najpierw filter, a następnie map dla pozostałych elementów.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val result = nums.filter { it % 2 == 0 }.map { it * 10 }
println(result)
}Nazywanie parametru
Zamiast it można nadać parametrowi lambdy własną nazwę, aby zwiększyć czytelność, szczególnie przy łączeniu operacji.
Użyj strzałki: { name -> ... }.
fun main() {
val prices = listOf(10, 25, 5)
val withTax = prices.map { price -> price + price / 10 }
println(withTax)
}forEachIndexed
Jeśli potrzebujesz także pozycji elementu, użyj forEachIndexed. Przekazuje on indeks i element.
Dzięki temu nie trzeba ręcznie śledzić licznika.
fun main() {
val tasks = listOf("eat", "code", "rest")
tasks.forEachIndexed { i, task ->
println("$i: $task")
}
}Łączenie operacji w praktyce
Razem operacje te pozwalają w prosty sposób wyrażać potoki przetwarzania danych. W tym przykładzie obliczamy łączną długość długich imion.
Ten kod jest niemal tak czytelny jak zwykły język.
fun main() {
val names = listOf("Ada", "Grace", "Bo")
val total = names.filter { it.length > 2 }.map { it.length }.sum()
println(total)
}Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat operacji na kolekcjach.
Podsumowanie
map przekształca każdy element w nową listę, filter zachowuje elementy spełniające warunek, a forEach wykonuje działanie dla każdego elementu.
Zwracają kolekcje, więc można je łączyć w celu tworzenia czytelnych potoków przetwarzania danych.
Często zadawane pytania
Czy lekcja „map, filter, forEach” jest bezpłatna?
Tak — pełny tekst „map, filter, forEach” 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 Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „map, filter, forEach”?
Przekształci Pan/Pani kolekcje za pomocą lambd. Ćwiczysz Android 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ąć Android Academy?
Nie wymagamy żadnego doświadczenia. Android 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 3 z 4.
Ile czasu zajmuje lekcja „map, filter, forEach”?
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 Android Academy?
Tak. Każda lekcja Android 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
- Listy i listy mutowalne
- Mapy i zbiory
- map, filter, forEach
- Lambdy i funkcje wyższego rzędu