Els mapes són una col·lecció de parells clau-valor on cada clau és única. Són molt útils quan necessitem associar valors a claus específiques i accedir a aquests valors de manera eficient. En aquest tema, aprendrem com crear, manipular i utilitzar mapes en Dart.

Continguts

Creació de Mapes

En Dart, podem crear mapes utilitzant literals de mapes o el constructor Map(). Aquí teniu alguns exemples:

void main() {
  // Creació d'un mapa buit
  Map<String, int> mapBuit = {};

  // Creació d'un mapa amb valors inicials
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  // Utilitzant el constructor Map()
  Map<int, String> nombres = Map();
  nombres[1] = 'Un';
  nombres[2] = 'Dos';

  print(mapBuit); // {}
  print(capitals); // {Espanya: Madrid, França: París, Itàlia: Roma}
  print(nombres); // {1: Un, 2: Dos}
}

Accés als Elements del Mapa

Podem accedir als valors d'un mapa utilitzant les claus corresponents:

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  print(capitals['Espanya']); // Madrid
  print(capitals['França']); // París
}

Si intentem accedir a una clau que no existeix, obtindrem null:

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  print(capitals['Alemanya']); // null
}

Modificació de Mapes

Podem afegir, actualitzar o eliminar elements d'un mapa de la següent manera:

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  // Afegir un nou element
  capitals['Alemanya'] = 'Berlín';

  // Actualitzar un element existent
  capitals['Espanya'] = 'Barcelona';

  // Eliminar un element
  capitals.remove('França');

  print(capitals); // {Espanya: Barcelona, Itàlia: Roma, Alemanya: Berlín}
}

Iteració sobre Mapes

Podem iterar sobre els elements d'un mapa utilitzant bucles for o mètodes com forEach:

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  // Utilitzant un bucle for
  for (var clau in capitals.keys) {
    print('La capital de $clau és ${capitals[clau]}');
  }

  // Utilitzant forEach
  capitals.forEach((clau, valor) {
    print('La capital de $clau és $valor');
  });
}

Funcions i Mètodes de Mapes

Dart proporciona diverses funcions i mètodes útils per treballar amb mapes:

Mètode Descripció
containsKey(clau) Retorna true si el mapa conté la clau especificada.
containsValue(valor) Retorna true si el mapa conté el valor especificat.
isEmpty Retorna true si el mapa està buit.
isNotEmpty Retorna true si el mapa no està buit.
length Retorna el nombre d'entrades en el mapa.
clear() Elimina tots els elements del mapa.

Exemple:

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  print(capitals.containsKey('Espanya')); // true
  print(capitals.containsValue('Madrid')); // true
  print(capitals.isEmpty); // false
  print(capitals.length); // 3

  capitals.clear();
  print(capitals.isEmpty); // true
}

Exercicis Pràctics

Exercici 1

Crea un mapa que associï noms de persones amb les seves edats. Afegeix algunes entrades, actualitza una edat i elimina una entrada. Mostra el mapa resultant.

Solució

void main() {
  Map<String, int> edats = {
    'Anna': 25,
    'Joan': 30,
    'Maria': 22
  };

  // Afegir una nova entrada
  edats['Pere'] = 28;

  // Actualitzar una edat
  edats['Anna'] = 26;

  // Eliminar una entrada
  edats.remove('Joan');

  print(edats); // {Anna: 26, Maria: 22, Pere: 28}
}

Exercici 2

Crea un mapa que associï noms de països amb les seves capitals. Escriu una funció que prengui aquest mapa i un nom de país com a paràmetre i retorni la capital del país. Si el país no existeix en el mapa, retorna un missatge indicant-ho.

Solució

String obtenirCapital(Map<String, String> capitals, String pais) {
  if (capitals.containsKey(pais)) {
    return 'La capital de $pais és ${capitals[pais]}';
  } else {
    return 'El país $pais no es troba en el mapa';
  }
}

void main() {
  Map<String, String> capitals = {
    'Espanya': 'Madrid',
    'França': 'París',
    'Itàlia': 'Roma'
  };

  print(obtenirCapital(capitals, 'Espanya')); // La capital de Espanya és Madrid
  print(obtenirCapital(capitals, 'Alemanya')); // El país Alemanya no es troba en el mapa
}

Conclusió

Els mapes són una eina poderosa per gestionar col·leccions de dades associades a claus úniques. Hem après com crear, accedir, modificar i iterar sobre mapes, així com utilitzar diverses funcions i mètodes útils. Amb els exercicis pràctics, hem reforçat aquests conceptes i estem preparats per aplicar-los en projectes reals.

© Copyright 2024. Tots els drets reservats