0Pricing
Kotlin Academy · Lekcja

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

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