Aplicacions amb Flutter, Dart i Flame

Tutorial Flutter Flame Projectes   Recursos CITCEA
Exemples Dart Dades pràctiques     Inici

Diccionaris

Els diccionaris, o maps, són estructures similars a les llistes però en les quals la indexació no es fa per la posició, sinó que es fa servir una clau per identificar cada element.

La manera més organitzada de crear un diccionari és posant-ho explícitament i indicant el tipus de dades de la clau i el del valor:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
...

És possible imprimir el diccionari sencer:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  print(preus);  // Escriu: {"patates": 1.25, "cervesa": 1.5, "aigua": 1.0}
...

O demanar-li que ens indiqui quines són les claus o bé quins són els valors.

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  print(preus.keys);  // Escriu: (patates, cervesa, aigua)
  print(preus.values);  // Escriu: (1.25, 1.5, 1.0)
...

Podem accedir a qualsevol element indicant-ne la clau.

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  print(preus["aigua"]);  // Escriu: 1.0
...

I els podem assignar un nou valor:

...
  preus["aigua"] = 1.15;
...

Si la clau no existeix encara en el diccionari, ens afegirà un nou element.

Emprant addAll podem fer servir un diccionari per afegir elements a un altre diccionari.

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  Map<String, double> nousPreus = {
    "refrescos": 1.35,
    "olives": 2.0
  };
  preus.addAll(nousPreus);
  print(preus);  // Escriu: {patates: 1.25, cervesa: 1.5, aigua: 1.0, refrescos: 1.35, olives: 2.0}
...

O bé:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  preus.addAll({"refrescos": 1.35, "olives": 2.0});
  print(preus);  // Escriu: {patates: 1.25, cervesa: 1.5, aigua: 1.0, refrescos: 1.35, olives: 2.0}
...

Amb remove podem eliminar un element.

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  preus.remove("cervesa");
  print(preus);  // Escriu: {patates: 1.25, aigua: 1.0}
...

Podem comprovar si hi ha una determinada clau o un determinat valor.

...
  bool hiHaClau = preus.containsKey("aigua");
  bool hiHaValor = preus.containsValue(1.5);
...

Es pot consultar la seva llargada amb length.

...
  int llargada = preus.length;
...

Existeix la possibilitat d'esborrar tots els elements, emprant clear.

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  preus.clear();
  print(preus);  // Escriu: {}
...

Podem fer servir un bucle for per recórrer tots els elements de la llista, ja sigui les claus:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  for(var elem in preus.keys){
    print(elem);
  }
...

els valors:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  for(var elem in preus.values){
    print(elem);
  }
...

o les dues coses:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  for(var elem in preus.entries){
    print("Per a la clau ${elem.key} tenim el valor ${elem.value}");
  }
...

Alternativament, podem emprar un forEach:

...
  Map<String, double> preus = {
    "patates": 1.25,
    "cervesa": 1.5,
    "aigua": 1.0
  };
  preus.forEach((clau, valor){
    print("Per a la clau $clau tenim el valor $valor");
  });
...

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.