Data class nelle collezioni
Le utilizzi in mappe e set
Data class nelle collezioni è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.
Le data class incontrano le raccolte
Poiché le data class hanno equals e hashCode basati sul valore, si comportano perfettamente all'interno delle raccolte.
Questa lezione mostra come usare le data class in liste, set e Map.
Data class in una lista
Memorizzi gli oggetti dati in una lista e li iteri come qualsiasi altro elemento.
Il loro toString leggibile rende semplice stamparli.
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 funziona in base al valore
Poiché equals confronta i valori, contains trova un oggetto equivalente anche se si tratta di un'istanza diversa.
Non è necessario che sia lo stesso riferimento.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30))
println(users.contains(User("Alice", 30)))
}Rimuovere i duplicati con un Set
I Set rifiutano i duplicati usando equals e hashCode.
Due oggetti dati con valori identici vengono considerati lo stesso elemento.
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)
}Data class come chiavi di una Map
Una data class è un'ottima chiave per una Map, perché le ricerche si basano sull'uguaglianza dei valori.
Può creare un oggetto chiave al volo e trovare comunque il valore memorizzato.
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)])
}Data class come valori di una Map
Naturalmente, le data class possono essere anche i valori, per rappresentare record completi associati a un id.
È una struttura comune per le ricerche in memoria.
data class User(val name: String, val age: Int)
fun main() {
val byId = mapOf(1 to User("Alice", 30))
println(byId[1]?.name)
}Filtrare le raccolte
Combini le data class con funzioni delle raccolte come filter per interrogare i dati.
La lambda accede direttamente alle proprietà.
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)
}Eseguire il mapping sulle proprietà
Usi map per trasformare una raccolta di oggetti in una raccolta contenente una sola proprietà.
In questo modo estrae solo i dati necessari.
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)
}Raggruppare in base a una proprietà
groupBy trasforma una lista in una Map le cui chiavi sono costituite dalla proprietà scelta.
In questo caso, gli utenti vengono raggruppati in base alla città.
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)
}Aggiornare gli elementi in modo immutabile
Per aggiornare un elemento in una lista immutabile, esegua il mapping sulla lista e usi copy sull'elemento corrispondente.
Il risultato è una nuova lista con un solo oggetto modificato.
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)
}Mettere tutto insieme
Le data class sono elementi ideali per le raccolte:
containse i Set funzionano in base al valore- Creano chiavi di Map sicure e confrontabili
- Si combinano naturalmente con
filter,mapegroupBy copyconsente aggiornamenti immutabili
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 })
}Verifica rapida
Verifichi la Sua comprensione delle data class nelle raccolte.
Riepilogo
Ha imparato come funzionano le data class nelle raccolte:
- L'uguaglianza basata sul valore è alla base di
contains, dei Set e delle chiavi di Map - Si combinano con
filter,mapegroupBy copysupporta gli aggiornamenti immutabili
Questo completa il corso Data Classes and Destructuring.
Domande Frequenti
La lezione «Data class nelle collezioni» è gratuita?
Sì — il testo completo di «Data class nelle collezioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.
Cosa imparerò in «Data class nelle collezioni»?
Le utilizzi in mappe e set Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Kotlin Academy?
Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Data class nelle collezioni»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?
Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Dichiarazione delle data class
- copy ed equals
- Dichiarazioni destrutturate
- Data class nelle collezioni