Collection di Kotlin
Lavorare con List, Set e Map. Usare operatori funzionali come filter, map, sortedBy, forEach, find, any e all e concatenare le operazioni per trasformare i dati in modo conciso.
Collection di Kotlin è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 1 di 6. 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 Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 6 lezioni in totale.
Panoramica delle raccolte
La libreria standard di Kotlin fornisce tre tipi principali di raccolte:
- List — sequenza ordinata di elementi (può contenere duplicati)
- Set — elementi univoci, senza un ordine specifico
- Map — coppie chiave-valore, con chiavi univoche
Ogni tipo dispone di una versione immutabile (sola lettura) e di una versione mutabile (modificabile).
Liste: listOf e mutableListOf
Crei le liste usando funzioni factory:
fun main() {
// Immutable — cannot add/remove items
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // Apple
println(fruits.size) // 3
// Mutable — can modify
val scores = mutableListOf(10, 20, 30)
scores.add(40)
scores.removeAt(0) // remove index 0
println(scores) // [20, 30, 40]
}Map: coppie chiave-valore
Utilizzi mapOf e mutableMapOf per creare le mappe. Acceda ai valori tramite la chiave:
fun main() {
val capitals = mapOf(
"Turkey" to "Ankara",
"Germany" to "Berlin",
"Japan" to "Tokyo"
)
println(capitals["Turkey"]) // Ankara
println(capitals["France"]) // null (not found)
println(capitals.getOrDefault("France", "Unknown")) // Unknown
// Iterate
for ((country, city) in capitals) {
println("$country -> $city")
}
}filter — selezionare elementi
filter restituisce una nuova lista contenente solo gli elementi che soddisfano una condizione:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8)
val evens = numbers.filter { it % 2 == 0 }
println(evens) // [2, 4, 6, 8]
val names = listOf("Alice", "Bob", "Anna", "Charlie")
val aNames = names.filter { it.startsWith("A") }
println(aNames) // [Alice, Anna]
}map — trasformare elementi
map trasforma ogni elemento e restituisce una nuova lista:
fun main() {
val prices = listOf(10.0, 20.0, 30.0)
// Apply 10% tax
val withTax = prices.map { it * 1.1 }
println(withTax) // [11.0, 22.0, 33.0]
val names = listOf("alice", "bob", "carol")
val upper = names.map { it.uppercase() }
println(upper) // [ALICE, BOB, CAROL]
}sortedBy e sortedByDescending
Ordini una lista in base a una proprietà:
data class Student(val name: String, val grade: Int)
fun main() {
val students = listOf(
Student("Alice", 88),
Student("Bob", 95),
Student("Carol", 72)
)
val byGrade = students.sortedByDescending { it.grade }
for (s in byGrade) println("${s.name}: ${s.grade}")
// Bob: 95
// Alice: 88
// Carol: 72
}forEach e find
Altre due funzioni utili per le raccolte:
forEach— esegue un'iterazione senza creare un risultatofind— restituisce il primo elemento che soddisfa una condizione, oppure null
concatenamento delle operazioni
Concateni più operazioni per trasformare i dati in modo conciso:
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Laptop", 999.0, true),
Product("Mouse", 29.0, false),
Product("Keyboard", 79.0, true),
Product("Monitor", 349.0, true)
)
// In-stock products under $500, sorted by price
val result = products
.filter { it.inStock && it.price < 500 }
.sortedBy { it.price }
.map { "${it.name}: ${it.price}" }
result.forEach { println(it) }
}any, all, count
Funzioni aggregate per ottenere rapidamente delle risposte:
any { condition }— true se almeno un elemento corrispondeall { condition }— true se tutti gli elementi corrispondonocount { condition }— numero di elementi corrispondentisumOf { it.price }— somma di una proprietà numerica
Verifica rapida
Quale funzione utilizzerebbe per ottenere solo gli elementi di una lista che soddisfano una condizione?
Riepilogo: raccolte Kotlin
Ora può lavorare in modo efficiente con i dati in Kotlin:
listOf/mutableListOf,mapOf/mutableMapOffilter— selezionare gli elementi corrispondentimap— trasformare gli elementisortedBy/sortedByDescending- Concatenare le operazioni per creare pipeline di dati chiare e leggibili
Prossimo argomento: visualizzare le liste sullo schermo con RecyclerView.
Domande Frequenti
La lezione «Collection di Kotlin» è gratuita?
Sì — il testo completo di «Collection di Kotlin» è 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 Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 6 lezioni in totale.
Cosa imparerò in «Collection di Kotlin»?
Lavorare con List, Set e Map. Usare operatori funzionali come filter, map, sortedBy, forEach, find, any e all e concatenare le operazioni per trasformare i dati in modo conciso. Eserciti Android 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 Android Academy?
Non è richiesta alcuna esperienza precedente. Android 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 1 di 6.
Quanto tempo richiede la lezione «Collection di Kotlin»?
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 Android Academy?
Sì. Ogni lezione Android 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
- Collection di Kotlin
- Nozioni di base su RecyclerView
- Eventi di clic di RecyclerView
- SharedPreferences
- DataStore Preferences
- Adapter e DiffUtil