Tworzenie map i spłaszczanie
associate i flatMap
Tworzenie map i spłaszczanie to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 4 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.
Tworzenie map i spłaszczanie
Dwa kolejne zaawansowane narzędzia do pracy z kolekcjami: funkcje z rodziny associate tworzą mapy z listy, a flatMap / flatten przekształcają zagnieżdżone kolekcje w jedną płaską kolekcję.
Funkcja associateWith
associateWith używa każdego elementu jako klucza i oblicza jego wartość za pomocą lambdy, tworząc obiekt Map.
fun main() {
val words = listOf("a", "bb", "ccc")
val lengths = words.associateWith { it.length }
println(lengths)
}Funkcja associateBy
associateBy działa odwrotnie: oblicza klucz na podstawie każdego elementu, zachowując element jako wartość.
data class User(val id: Int, val name: String)
fun main() {
val users = listOf(User(1, "Ann"), User(2, "Bob"))
val byId = users.associateBy { it.id }
println(byId[2]?.name)
}Funkcja associate
Ogólna funkcja associate pozwala jednocześnie tworzyć klucz i wartość, zwracając obiekt Pair dla każdego elementu.
fun main() {
val names = listOf("Ann", "Bob", "Cy")
val map = names.associate { it to it.length }
println(map)
}Zduplikowane klucze
Jeśli dwa elementy wygenerują ten sam klucz w funkcji associate, wygrywa ostatni element. Jeśli potrzebują Państwo zachować każdy element, klucze powinny być unikatowe.
fun main() {
val words = listOf("apple", "ant", "bee")
val byFirst = words.associateBy { it.first() }
println(byFirst)
}Funkcja flatten
flatten przyjmuje kolekcję kolekcji i scala je w jedną płaską listę.
fun main() {
val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
val flat = nested.flatten()
println(flat)
}Funkcja flatMap
flatMap przekształca każdy element w kolekcję, a następnie spłaszcza wszystkie te kolekcje do jednej listy. Jest to połączenie map i flatten w jednym kroku.
fun main() {
val words = listOf("hi", "ok")
val chars = words.flatMap { it.toList() }
println(chars)
}flatMap na zagnieżdżonych danych
flatMap idealnie nadaje się do rozwijania zagnieżdżonych struktur do jednej sekwencji elementów.
data class Team(val members: List<String>)
fun main() {
val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
val everyone = teams.flatMap { it.members }
println(everyone)
}flatMap a map
Należy użyć map, gdy każdy element daje dokładnie jeden wynik. flatMap należy użyć wtedy, gdy każdy element daje kolekcję, a wszystkie kolekcje mają zostać połączone w jedną płaską listę.
fun main() {
val numbers = listOf(1, 2, 3)
val mapped = numbers.map { listOf(it, it * 10) }
val flat = numbers.flatMap { listOf(it, it * 10) }
println("map: $mapped")
println("flatMap: $flat")
}Łączenie associate i flatMap
Narzędzia te często występują razem w potokach przetwarzania danych: najpierw spłaszczają zagnieżdżone dane, a następnie tworzą z nich mapę wyszukiwania za pomocą associate, aby zapewnić szybki dostęp.
data class Order(val items: List<String>)
fun main() {
val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
println(counts)
}Kiedy używać poszczególnych funkcji
Należy wybrać associateBy/associateWith, aby tworzyć szybkie mapy wyszukiwania z list, oraz flatMap/flatten, aby spłaszczać zagnieżdżone kolekcje. Dzięki nim praca z uporządkowanymi danymi jest zwięzła i czytelna.
Szybkie sprawdzenie
Co robi flatMap?
Podsumowanie
Nauczyli się Państwo tworzyć mapy za pomocą associate, associateBy i associateWith (wygrywa ostatni zduplikowany klucz), a także spłaszczać zagnieżdżenia za pomocą flatten i flatMap. Narzędzia te uzupełniają zestaw funkcji do przekształcania, organizowania, agregowania i restrukturyzowania danych.
Często zadawane pytania
Czy lekcja „Tworzenie map i spłaszczanie” jest bezpłatna?
Tak — pełny tekst „Tworzenie map i spłaszczanie” 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 „Tworzenie map i spłaszczanie”?
associate i flatMap Ć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 4 z 4.
Ile czasu zajmuje lekcja „Tworzenie map i spłaszczanie”?
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