Grupowanie i partycjonowanie
Porządkuj dane
Grupowanie i partycjonowanie to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 2 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.
Organizowanie danych
Czasami trzeba podzielić kolekcję na kategorie. Kotlin udostępnia funkcję groupBy, która grupuje elementy według klucza, oraz partition, która dzieli je na dwie listy na podstawie warunku.
Funkcja partition
partition dzieli kolekcję na Pair dwóch list: elementów spełniających predykat oraz elementów, które go nie spełniają.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val (even, odd) = numbers.partition { it % 2 == 0 }
println("Even: $even")
println("Odd: $odd")
}Destrukturyzacja obiektu Pair
Ponieważ partition zwraca obiekt Pair, można bezpośrednio dokonać jego destrukturyzacji do dwóch nazwanych zmiennych, jak pokazano powyżej. Można również uzyskać dostęp do właściwości .first i .second.
fun main() {
val result = listOf(10, -5, 3, -8).partition { it >= 0 }
println(result.first)
println(result.second)
}Funkcja groupBy
groupBy tworzy obiekt Map, w którym każdy klucz jest tworzony przez selektor, a wartością jest lista elementów współdzielących ten klucz.
fun main() {
val words = listOf("apple", "banana", "avocado", "cherry")
val byFirstLetter = words.groupBy { it.first() }
println(byFirstLetter)
}Grupowanie według obliczanego klucza
Kluczem może być dowolna obliczona wartość, na przykład długość ciągu znaków lub reszta z dzielenia.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
val byRemainder = numbers.groupBy { it % 3 }
println(byRemainder)
}groupBy z przekształcaniem wartości
groupBy przyjmuje drugi element lambda, który przekształca każdą wartość przed umieszczeniem jej w grupie.
fun main() {
val words = listOf("red", "rose", "blue", "berry")
val grouped = groupExample(words)
println(grouped)
}
fun groupExample(words: List<String>) =
words.groupBy({ it.first() }, { it.uppercase() })Iterowanie po grupach
Ponieważ groupBy zwraca obiekt Map, można iterować po wpisach, aby przetworzyć każdą grupę.
fun main() {
val animals = listOf("cat", "cow", "dog", "duck")
val groups = animals.groupBy { it.first() }
for ((letter, list) in groups) {
println("$letter -> $list")
}
}Zliczanie za pomocą groupingBy
Do zliczania elementów według klucza wydajne i czytelne jest użycie funkcji groupingBy, a następnie eachCount.
fun main() {
val letters = listOf("a", "b", "a", "c", "b", "a")
val counts = letters.groupingBy { it }.eachCount()
println(counts)
}partition a filter
Jeśli potrzebują Państwo tylko pasujących elementów, należy użyć filter. Jeśli potrzebują Państwo ZARÓWNO pasujących, jak i niepasujących elementów, partition wykona to w jednym przejściu i zwróci obie listy.
fun main() {
val ages = listOf(15, 22, 17, 30, 12)
val (adults, minors) = ages.partition { it >= 18 }
println("Adults: $adults, Minors: $minors")
}Wybór między groupBy a partition
Należy użyć partition, gdy potrzebne są dokładnie dwa zbiory określone warunkiem typu tak/nie. groupBy należy użyć wtedy, gdy może istnieć wiele zbiorów pogrupowanych według pewnej właściwości.
Grupowanie w praktyce
Grupowanie i partycjonowanie zastępują rozwlekłe ręczne pętle mapami i listami. Jasno wyrażają intencję i ograniczają liczbę błędów związanych z ręcznym zarządzaniem danymi.
Szybkie sprawdzenie
Co zwraca partition?
Podsumowanie
Nauczyli się Państwo używać partition do dzielenia elementów na dwie listy według warunku oraz groupBy do grupowania ich w mapie według klucza, a także groupingBy().eachCount() do zliczania. Następnie zredukują Państwo kolekcje do pojedynczych wartości za pomocą agregacji.
Często zadawane pytania
Czy lekcja „Grupowanie i partycjonowanie” jest bezpłatna?
Tak — pełny tekst „Grupowanie i partycjonowanie” 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 „Grupowanie i partycjonowanie”?
Porządkuj dane Ć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 2 z 4.
Ile czasu zajmuje lekcja „Grupowanie i partycjonowanie”?
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