Aplicacions amb Flutter, Dart i Flame

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

Conjunts de dades

Els conjunts de dades, o sets, són estructures semblants a les llistes però que no admeten elements duplicats. Si intentem duplicar un element, ignorarà la segona aparició. Els conjunts no són ordenats i, per tant, els elements no tenen una posició concreta.

La manera més organitzada de crear un conjunt és posant-ho explícitament i indicant el tipus de dades:

...
  Set<String> estacions = {"hivern", "primavera", "estiu", "tardor"};
...

Fixem-nos que els elements van tancats entre claus; a diferència de les llistes, que feien servir claudàtors.

També podem fer:

...
  Set<String> estacions;
  estacions = {"hivern", "primavera", "estiu", "tardor"};
...

I podem definir el conjunt com a var, en quin cas podrà tenir elements de tipus diferents.

...
  var conjunt = {"Ferro", 3, 34.5};
...

però caldrà vigilar a l'hora de fer-ne servir els elements.

És possible imprimir el conjunt sencer:

...
  Set<String> estacions = {"hivern", "primavera", "estiu", "tardor"};
  print(estacions);  // Escriu: {hivern, primavera, estiu, tardor}
...

Emprant add podem afegir nous elements. Si en posem algun de repetit, serà ignorat.

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  noms.add("Eric");
  noms.add("Laura");
  print(noms);  // Escriu: {Paula, Eric, Alba, Joan, Laura}
...

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

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  Set<String> noms2 = {"Maria", "Rosa"};
  noms.addAll(noms2);
  print(noms);  // Escriu: {Paula, Eric, Alba, Joan, Maria, Rosa}
...

O bé:

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  noms.addAll({"Maria", "Rosa"});
  print(noms);  // Escriu: {Paula, Eric, Alba, Joan, Maria, Rosa}
...

Amb remove podem eliminar un element.

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  noms.remove("Alba");
  print(noms);  // Escriu: {Paula, Eric, Joan}
...

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

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  noms.clear();
  print(noms);  // Escriu: {}
...

Emprant removeAll podem fer servir un conjunt per treure elements d'un altre conjunt.

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  Set<String> noms2 = {"Eric", "Joan"};
  noms.removeAll(noms2);
  print(noms);  // Escriu: {Paula, Alba}
...

O bé:

...
  Set<String> noms = {"Paula", "Eric", "Alba", "Joan"};
  noms.removeAll({"Eric", "Joan"});
  print(noms);  // Escriu: {Paula, Alba}
...

Es pot consultar la seva llargada amb length.

...
  int llargada = estacions.length;  // 4
...

També es pot consultar si algun element és present al conjunt. Per exemple:

...
  bool present = noms.contains("Alba");
...

Es pot convertir una llista en un conjunt, això és útil per eliminar els elements duplicats.

...
  List<String> noms = ["Paula", "Eric", "Alba", "Paula", "Joan"];
  Set<String> setnoms = Set.from(noms);
  print(setnoms);  // Escriu: {Paula, Eric, Alba, Joan}
...

Podem fer servir un bucle for per recórrer tots els elements de la llista.

...
  Set<int> valors = {0, 1, 3, 2};
  for(int elem in valors){
    print(elem);
  }
...

Alternativament, podem emprar un forEach:

...
  Set<int> valors = {0, 1, 3, 2};
  valors.forEach(print);
...

O d'una manera una mica més desenvolupada i flexible:

...
  Set<int> valors = {0, 1, 3, 2};
  valors.forEach((elem){
    print("Element: $elem");
  });
...

 

 

 

 

 

 

 

 

 

 

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