Data class w kolekcjach
Używaj ich w mapach i zbiorach
Data class w kolekcjach 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.
Klasy danych w kolekcjach
Ponieważ klasy danych mają oparte na wartościach funkcje equals i hashCode, doskonale sprawdzają się w kolekcjach.
W tej lekcji pokazano działanie klas danych na listach, zbiorach i mapach.
Klasy danych na liście
Obiekty danych można przechowywać na liście i iterować po nich tak jak po dowolnych innych elementach.
Ich czytelna funkcja toString ułatwia wyświetlanie.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
for (u in users) println(u)
}contains działa na podstawie wartości
Ponieważ equals porównuje wartości, contains znajdzie równoważny obiekt, nawet jeśli jest on inną instancją.
Nie jest potrzebna dokładnie ta sama referencja.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30))
println(users.contains(User("Alice", 30)))
}Usuwanie duplikatów za pomocą zbioru
Zbiory odrzucają duplikaty za pomocą equals i hashCode.
Dwa obiekty danych o identycznych wartościach są traktowane jako ten sam element.
data class Point(val x: Int, val y: Int)
fun main() {
val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
println(set.size)
}Klasy danych jako klucze mapy
Klasa danych świetnie sprawdza się jako klucz mapy, ponieważ wyszukiwanie opiera się na równości wartości.
Klucz można utworzyć w locie i mimo to odnaleźć zapisaną wartość.
data class Coord(val x: Int, val y: Int)
fun main() {
val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
println(grid[Coord(1, 1)])
}Klasy danych jako wartości mapy
Oczywiście klasy danych mogą być również wartościami, modelując bogate rekordy indeksowane identyfikatorem.
Jest to częsty sposób organizowania danych przechowywanych w pamięci.
data class User(val name: String, val age: Int)
fun main() {
val byId = mapOf(1 to User("Alice", 30))
println(byId[1]?.name)
}Filtrowanie kolekcji
Połącz klasy danych z funkcjami kolekcji, takimi jak filter, aby wyszukiwać dane.
Lambda uzyskuje bezpośredni dostęp do właściwości.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 40))
val adults = users.filter { it.age >= 30 }
println(adults)
}Mapowanie na właściwości
Użyj map, aby przekształcić kolekcję obiektów w kolekcję zawierającą jedną właściwość.
W ten sposób wyodrębnisz tylko potrzebne dane.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val names = users.map { it.name }
println(names)
}Grupowanie według właściwości
groupBy przekształca listę w mapę, której kluczami są wartości wybranej właściwości.
W tym przypadku użytkownicy są grupowani według miasta.
data class User(val name: String, val city: String)
fun main() {
val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
val byCity = users.groupBy { it.city }
println(byCity["Paris"]?.size)
}Niemutowalna aktualizacja elementów
Aby zaktualizować element na niemutowalnej liście, należy wykonać na niej map i użyć copy dla dopasowanego elementu.
Wynikiem jest nowa lista z jednym zmienionym obiektem.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
println(updated)
}Połączenie wszystkiego
Klasy danych są idealnymi elementami kolekcji:
containsi zbiory działają na podstawie wartości- Tworzą bezpieczne, porównywalne klucze map
- Naturalnie współpracują z funkcjami
filter,mapigroupBy copyumożliwia niemutowalne aktualizacje
data class User(val name: String, val age: Int)
fun main() {
val users = setOf(User("Alice", 30), User("Alice", 30))
println(users.size)
println(users.map { it.name })
}Szybki test
Sprawdź swoje rozumienie klas danych w kolekcjach.
Podsumowanie
Dowiedziałeś się, jak klasy danych działają w kolekcjach:
- Równość wartości zasila działanie
contains, zbiorów i kluczy map - Łączą się z funkcjami
filter,mapigroupBy copyobsługuje niemutowalne aktualizacje
Na tym kończy się kurs Klasy danych i destrukturyzacja.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Data class w kolekcjach” jest bezpłatna?
Tak — pełny tekst „Data class w kolekcjach” 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 „Data class w kolekcjach”?
Używaj ich w mapach i zbiorach Ć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 „Data class w kolekcjach”?
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
- Deklarowanie data class
- copy i equals
- Deklaracje destrukturyzujące
- Data class w kolekcjach