En aquest tema, explorarem les col·leccions i els genèrics en Kotlin. Les col·leccions són una part fonamental de qualsevol llenguatge de programació, ja que permeten emmagatzemar i manipular grups de dades. Els genèrics, per altra banda, permeten escriure codi més flexible i reutilitzable.
Col·leccions en Kotlin
Kotlin proporciona diverses col·leccions estàndard, com ara llistes, conjunts i mapes. Aquestes col·leccions poden ser mutables o immutables.
Llistes
Les llistes són col·leccions ordenades d'elements. Kotlin ofereix dues versions de llistes:
List
: Immutables, no es poden modificar després de la seva creació.MutableList
: Mutables, es poden modificar després de la seva creació.
Exemple de List
(Immutables)
Exemple de MutableList
(Mutables)
val fruits = mutableListOf("Apple", "Banana") fruits.add("Cherry") println(fruits) // Output: [Apple, Banana, Cherry]
Conjunts
Els conjunts són col·leccions no ordenades d'elements únics. Kotlin ofereix dues versions de conjunts:
Set
: Immutables.MutableSet
: Mutables.
Exemple de Set
(Immutables)
Exemple de MutableSet
(Mutables)
Mapes
Els mapes són col·leccions de parelles clau-valor. Kotlin ofereix dues versions de mapes:
Map
: Immutables.MutableMap
: Mutables.
Exemple de Map
(Immutables)
val countryCodes = mapOf("US" to "United States", "CA" to "Canada") println(countryCodes) // Output: {US=United States, CA=Canada}
Exemple de MutableMap
(Mutables)
val countryCodes = mutableMapOf("US" to "United States") countryCodes["CA"] = "Canada" println(countryCodes) // Output: {US=United States, CA=Canada}
Genèrics en Kotlin
Els genèrics permeten definir classes, interfícies i funcions que poden operar amb qualsevol tipus de dades, proporcionant així una major flexibilitat i reutilització del codi.
Classes Genèriques
Una classe genèrica és una classe que pot treballar amb qualsevol tipus de dades. Es defineix utilitzant paràmetres de tipus.
Exemple de Classe Genèrica
class Box<T>(val value: T) val intBox = Box(1) val stringBox = Box("Hello") println(intBox.value) // Output: 1 println(stringBox.value) // Output: Hello
Funcions Genèriques
Les funcions genèriques són funcions que poden treballar amb qualsevol tipus de dades. Es defineixen utilitzant paràmetres de tipus.
Exemple de Funció Genèrica
fun <T> printItem(item: T) { println(item) } printItem(1) // Output: 1 printItem("Hello") // Output: Hello
Restriccions de Tipus
Els genèrics poden tenir restriccions de tipus per limitar els tipus de dades que poden acceptar.
Exemple de Restricció de Tipus
fun <T : Number> sum(a: T, b: T): Double { return a.toDouble() + b.toDouble() } println(sum(1, 2)) // Output: 3.0 println(sum(1.5, 2.5)) // Output: 4.0
Exercicis Pràctics
Exercici 1: Crear una Llista Mutable
Crea una MutableList
de tipus String
i afegeix-hi tres elements. Després, imprimeix la llista.
Solució
val animals = mutableListOf("Dog", "Cat") animals.add("Elephant") println(animals) // Output: [Dog, Cat, Elephant]
Exercici 2: Crear una Classe Genèrica
Crea una classe genèrica Pair
que emmagatzemi dues valors de qualsevol tipus. Després, crea una instància de Pair
amb dos Int
i una altra amb dos String
.
Solució
class Pair<A, B>(val first: A, val second: B) val intPair = Pair(1, 2) val stringPair = Pair("Hello", "World") println(intPair.first) // Output: 1 println(intPair.second) // Output: 2 println(stringPair.first) // Output: Hello println(stringPair.second) // Output: World
Resum
En aquesta secció, hem après sobre les col·leccions i els genèrics en Kotlin. Hem vist com utilitzar llistes, conjunts i mapes, tant immutables com mutables. També hem explorat com crear classes i funcions genèriques per escriure codi més flexible i reutilitzable. Els exercicis pràctics ens han ajudat a consolidar aquests conceptes. En el proper tema, explorarem les funcions d'extensió en Kotlin.
Curs de Programació en Kotlin
Mòdul 1: Introducció a Kotlin
- Introducció a Kotlin
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Kotlin: Variables i Tipus de Dades
- Flux de Control: Condicionals i Bucles
- Funcions i Lambdas
Mòdul 2: Programació Orientada a Objectes en Kotlin
- Classes i Objectes
- Herència i Interfícies
- Modificadors de Visibilitat
- Classes de Dades i Classes Segellades
- Declaracions d'Objectes i Objectes Companys
Mòdul 3: Funcions Avançades de Kotlin
- Col·leccions i Genèrics
- Funcions d'Extensió
- Funcions d'Ordre Superior i Programació Funcional
- Coroutines i Programació Asíncrona
- DSL (Llenguatge Específic de Domini) en Kotlin
Mòdul 4: Kotlin per al Desenvolupament d'Android
- Introducció al Desenvolupament d'Android amb Kotlin
- Construcció d'Interfícies d'Usuari
- Gestió de l'Entrada de l'Usuari
- Xarxes i Emmagatzematge de Dades
- Proves i Depuració