No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Dart

Curso de Dart

Argel Franco Bejarano de la Cruz

Argel Franco Bejarano de la Cruz

Diccionarios

6/29
Recursos

Los Maps, también llamadas Hash o Diccionarios son objetos que tienen una asociación entre llaves y valores.

Aportes 60

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

🗺️ Map es utilizado generalmente para trabajar con JSON.

RESUMEN DE LA CLASE

Diccionarios/Maps/Hash: Son objetos que tienen una asociación entre llaves y valores, ambas de cualquier tipo. Las llaves son únicas, pero los valores pueden repetirse.

Declaración:

Map<tipo_llave, tipo_valor> map;

Inicialización:

map = {1:"Rojo",2:"Verde"};

Agregar elemento:

map[3]="Azul";

Eliminar elemento:

map.remove(llave);

Saber si el map está vacío:

map.isEmpty //Retorna un valor "true" si está vacío y "false" en caso contrario

Saber longitud:

map.lenght //Retorna un valor entero con la longitud del mapa

Es muy normal usar el tipo dynamic en la declaración de los Maps.

Código comentado de la clase:

// * Clase sobre Diccionarios (Maps o Hash)
// ? Es un objeto que tiene una asociación entre llaves y valores,
// ? ambos pueden ser declaradas de cualquier tipo de objeto.

// ? Cada llave debe ser única pero el valor puede utilizarse tantas
// ? veces como se necesite !

main(List<String> args) {
  Map estoEsUnMapa; // ! Esto es una declaración de un objeto tipo Map
  estoEsUnMapa = {1:'Rojo', 2:'Verde'}; // ? La declaración es diferente a las colecciones, 
  // ? debe ser realizada entre llaves {} y debe asignársele una llave a cada valor.
  
  print(estoEsUnMapa); // * He aquí su impresión, y se visualiza igual de cómo se declara.

  Map<int, dynamic> estoEsUnMapaDinamico; // ! Con esta sintaxis, podemos definir cual será la llave int:dynamic y cual será el valor almacenado.
  // ! En este caso, al ser dinámico el valor asignado, puede tomar muchos tipos de valores.

  estoEsUnMapaDinamico = {1:'Uno', 2:2, 3:3.124}; // ! Prueba de lo anterior dicho.
  estoEsUnMapaDinamico[4] = true; // ? Otra forma de agregar contenido a un mapa.

  print(estoEsUnMapaDinamico); // * Visualización de su contenido

  estoEsUnMapaDinamico.remove(3); // ! Eliminamos un valor, dándole a este métodos u llave.

  print(estoEsUnMapaDinamico); // * Visualizamos.

  bool estaVacioElMapa = estoEsUnMapaDinamico.isEmpty; // * Método para comprobar si el mapa está vacio
  int longitud = estoEsUnMapaDinamico.length; // * Método para comprobar la longitud del mapa.

  print("Está vacio el mapa? : $estaVacioElMapa, cual es su longitud? : $longitud"); // ! Prueba de lo anterior mencionado.

}

Utilizando el RemoveWhere:

Map<int , String > lista = { 1: 'Dart Vader', 2: 'Obi Wan', 3: 'Yoda'};

  lista.removeWhere((key,value) => value == 'Dart Vader');
  // {2: 'Obi Wan', 3: 'Yoda'};
  
  lista.removeWhere((key,value) => key == 3);
  // {2: 'Obi Wan'};

Un ejemplo utilizando los conceptos de este video!

//Tipo map, el cual define a pares de valores (llave y valor)
  
  String propiedad = 'soltero';
    
  Map <String, dynamic> persona =  {
    'nombre'  : 'Carlos',
    'edad'    : 32,
    'soltero' : true
  };
  
  //Impresion del dato que queremos
  print(persona['nombre']);
  print(persona['edad']);
  
  //Imprimimos el valor de la variable propiedad que tiene a su vez el valor de la lllave soltero del map   persona
  
  print(persona[propiedad]);
  
  //Inicio con num
  
  Map <int, String>personas = {
    1: 'Tony',
    2: 'Peter',
    9: 'Strange'
    //Esto no se hace'10': 'Juan'
  };
  
  //Nuevo elemento
  personas.addAll({ 4: 'Banner' });
  print(personas);
  
  //Obtener un valor
  print(personas[2]);
  
  //Obtenemos la longitud del map personas
  print(personas.length);
  
  //Eliminamos una posicion del map personas
  personas.remove(9);
  
  //Imprimimos el resultado
  print(personas);

La opción addAll tampoco estaría mal implementarla 😄

Los maps son muy utilizes en peticiones http con flutter

Un objeto Map corresponde a un conjunto de llave : valor y es equivalente en JavaScript a un objeto de tipo JSON (JavaScript Object Notation) pero con la diferencia de que siempre el dato correspondiente a la llave es tratado como un String.

Un objeto Map en Dart:

Map<String, dynamic> map = {'uno': 1, 'dos': 2, 'tres': 3};

Es equivalente en JavaScript a:
A) var json = {'uno': 1, 'dos': 2, 'tres': 3};

Aunque también puede ser escrito de la siguiente forma:
B) var json = {uno: 1, dos: 2, tres: 3};

Pero como quiera JavaScript lo interpreta de la siguiente manera:

console.log(json); => {'uno': 1, 'dos': 2, 'tres': 3}

tambien se puede agregar mas objetos de la siguiente manera usando

map.addAll(objeto);

Ejemplo:

Map<String,String> user;
user={
"firstName":"cosme",
"lastName:":"fulanito"
}

Entonces si quiero agregar un nuevo clave valor al objeto actual, lo puedo hacer de la siguiente manera.

user.addAll({'email':'[email protected]'});
print(user);

entonces en el ouput voy a tener lo siguiente objeto:

{
fistName: cosme,
lastName: fulanito,
email: cosme.fulanito@gmail.com
}

Esto es igual a los diccionarios de python.

Si buscas un una clave que no esta en el mapa o diccionario se obtendrá un null.

le agregue en la posicion [5] la cadena del ejemplo anterior.

la verdad Dart me parece un lenguaje bastante intuitivo, me recuerda mucho a Kotlin

Excelente curso!, consulta: los Map seria lo mismo que declarar un objeto en javascript? o un array asociativo en php?

😃

Me ha tocado usarlo recibiendo datos del Backend en Flutter en formato JSON…
Son muy necesarios para ese tipo de cosas.

void main(List <String> arguments) {
  Map<String,int> myMap;//Map<Tipo1,Tipo2> variableName
  myMap = {'Dato1':1,'Dato2':2,'Dato3':3};//Llenar manualmente datos del mapa
  print(myMap);//Imprimir mapa
  myMap['Dato4'] = 4;//Añadir dato al mapa
  print(myMap);//Imprimir mapa
  myMap.remove('Dato3');//Remover  elemento del mapa
  print(myMap);
}```

Es posible iniciar el valor de un set colocando los distintos elementos entre llaves directamente

Set set;
set = {'uno', 'dos', 'tres'}

Genial, los mapas son realmente facil de utilizar y tienen muchisímas aplicaciones. Entre ellas las clásicas agendas telefónicas:

ejemplo:

{Diego: 311xxxxxxx,
Maria: 312xxxxxxx,
Nathalia: 320xxxxxxx}

aprendí a leer C++ en otro curso y ya sabía escribir python, está siendo muy fácil asimilarlo, muchas gracias.

Los maps son conocidos como diccionarios o Hash
La forma de declarar es la siguiente

Map map;

Para asígnarle los datos se lo hace de la siguiente manera:

map={1:'Rojo', 2:'Amarillo'};

Podemos añadir un valor más al map o los que querramos y visualizarlo así de la siguiente manera

map[3]='Verde'
print (map)

El número 3 es el índice o la llave que así se maneja los maps en Dart para acceder a cada uno de sus valores la forma de la salida de datos se da así

{1: Rojo, 2: Amarillo,3:Verde}

Existen características que permite trabajar con maps las cuales son los siguientes

  • length: Permite ver la la longitud del map definido en el caso anterior nos va a dar resultado 3, se lo define así:
    print (map.length)
  • remove: Permite remover el contenido de una llave definida, se lo define así:
    map.remove(2)
    print(map)

En esta operación se remueve el contenido con la llave 2 y el resultado será así

{1: Rojo, 3: Verde}
  • isEmpty: Permite verificar si el map que definimos está vacío o no, mostrará true o false según sea la definición:
    print (map.isEmpty)
  • IsNoEmpty: Permite verificar si el map no está vacío, misma definición que el anterior.
  • AddAll: Permite agregar un grupo de valores con sus llaves se define o se realiza de la siguiente manera:
    map.addAll({5:‘Naranja’, 6:‘Azul’, 7:‘Celeste’, 8:‘Café’ });

El resultado será

print (map);

Resultado

{1: Rojo, 3: Azul, 4: Rosa, 5: Naranja, 6: Azul, 7: Celeste, 8: Café}
  • foreach: Recorre el map de la siguiente manera
    map.forEach((k,v) => print(’${k}: ${v}’));

Map también es un tipo de colección. En Maps, los datos se almacenan en clave: pares de valores. Las claves y los valores pueden ser de cualquier tipo.
El mapa es una colección cultivable que significa que puede reducirse y crecer en tiempo de ejecución.
El mapa también puede contener un valor NULL .
Hay dos formas de declarar mapas:
Usando Map Literal
Usando el constructor de mapas

Wooo la verdad tiene cosas muy buenas que parecen de Javascript

Si usan

print(map.values)

solo van a imprimir los nombres de los colores

Trabaje con Java hace unos 6 a;os y actualmente con php y js pero siento que este lenguaje es muy fluido para trabajar, no siento alguna dificultad para empesar a trabajar con el, incluso me estoy sumergiendo mas con la documentacion

¿Existen ventajas de especificar el tipo de dato? Ya sea en variables, colecciones, etc.

El primer lenguaje que aprendí fue C y la sintaxis es muy similar. Me está gustando Dart 😃

Dart es un lenguaje maravilloso. Su sintaxis es al ya conocido y clásico estilo C. Si conoces C o Java, vas volando rápidamente con Dart 😉

  Map<int, dynamic> map;
  map = {1:'Rojo',2:'Verde'};
  print(map);
  
  map[3]='Azul';
  print(map);
  
  map[4]=100;
  print(map);
  
  map.remove(2);
  print(map);
  
  print(map.isEmpty);
  print(map.length);
  

Que genial!!

Algo mas o menos parecido para cuando queremos hacer tipo las interfaces el dynamic ¿?

Los Map son casi lo mismo que los JSON o tienen la misma simulitud ?

Didáctico…

Excelente la manera en la llevas el ritmo de las clases. 😃.

Excelente la manera en la que llevas el ritmo de las clases, very good.

Por esto me gusta platzi por el dinamismo en sus clases y me encanta la forma en la que aprendo porque puedo dejarlo de ver por que me llego trabajo pero cuando lo remoto recuerdo absolutamente todo y puedo seguir aprendiendo

genial

Aquí dejo mi algunos ejemplos de uso con maps:

//Maps son conjuntos de elementos que permiten relacionarnos con una clave que lo identifica de manera unica y nos permite obtener su valor.
  
  var idiomas = {
    //clave: valor
    'es': 'Español',
    'en': 'Ingles',
    'fr': 'Frances'    
  };
  print('Estos son los idiomas: ${idiomas}');
  print(idiomas['es']);
 
  //podemos añadir otro conjunto de elemntos clave valor.
  var nuevoIdiomas = {'ch': 'Chino'};
  idiomas.addAll(nuevoIdiomas);
  print(idiomas);
  
  //podemos tambien crear claves numericas en los mpas
  
  var alumnos = Map();
  alumnos[1] = 'Manuel';
  alumnos[2] = 'Josue';
  alumnos[3] = 'Juan';
  alumnos[4] = 'Pedro';
  
  print(alumnos);
  print(alumnos[4]);  
  
  
  //tambien podemos de crear un conjunto estatico  aqui no podemos crear mas elementos
   var idiomas2 = const {
    //clave: valor
    'es': 'Español',
    'en': 'Ingles',
    'fr': 'Frances'    
  };
  
  
  //obtener todas las llaves del mapa
  var sortedKeys = alumnos.keys.toList()..sort();
  print(sortedKeys);

main(List<String> args) {
  Map<int, dynamic> map;

  map = {1:'Rojo',2:'Azul'};

  //Agregar un valor
  map[3] = 'Verde';
  print(map);
  print(map.length);

  //Eliminar un elemento
  map.remove(1);
  print(map);

  //Vacio
  print(map.isEmpty);

  //Logitud
  print(map.length);

}

Realmente es muy fácil el manejo de los maps. A la expectativa de los demás contenidos

// Maps

main(List<String> arguments) {

Map map;
map = {1:‘Rojo’, 2:‘Verde’};

print (map);
}

Salida: {1: Rojo, 2: Verde}

Probando Maps

void main() {
 Map <int,String> map;
  map={};
  map[100]="Freddy";
  int longitud=map.length;
  print('$map longitud: $longitud');
  map[0]="Juan";
  map[2]="Pedro";
  map[4]="Gaby";
  map[6]="Rocio";
     longitud=map.length;
  print('$map longitud: $longitud');
  print(map);
  print(map.entries);
  map.remove(2);
  longitud=map.length;
  print('$map longitud: $longitud');
  
Result:

{100: Freddy} longitud: 1
{100: Freddy, 0: Juan, 2: Pedro, 4: Gaby, 6: Rocio} longitud: 5
{100: Freddy, 0: Juan, 2: Pedro, 4: Gaby, 6: Rocio}
(MapEntry(100: Freddy), MapEntry(0: Juan), MapEntry(2: Pedro), MapEntry(4: Gaby), MapEntry(6: Rocio))
{100: Freddy, 0: Juan, 4: Gaby, 6: Rocio} longitud: 4

}```

CLASE DICCIONARIOS o MAPS

//Map map;
Map<int, dynamic> map;
map = {1:‘Rojo’, 2: ‘Verde’, 3:‘Amarillo’};

** Asignación de valores**
map[4]=‘Cafe’;

Eliminar una posición
map.remove(2);

Obtener la longitud
print(map.length);

Muchas gracias.

Diccionarios/Maps/Hash: Son objetos que tienen una asociación entre llaves y valores, ambas de cualquier tipo. Las llaves son únicas, pero los valores pueden repetirse.
'
Agregando el contenido de una lista al valor de la llave 3

List list;
list = ['Amarillo', 'Negro'];

map = {1: 'Rojo', 2: 'Verde'};

map[3] = list;
print(map);

En la mayoría de los casos eh ocupado Listas , rara vez ocupe Maps, pero por lo que veo aquí son mas utilizados y junto con el tipo dynamic tiene mas funcionalidad.

Buena explicación , todo claro.

python … :V

Casi no se escucha nada

Los maps son keys y value, también pueden tener tipos.

Si queremos que sea un tipo de valor:

Map<int, String> map; // Si definimos que los valores son enteros nos dara error, ejemplo: Map<int,int> map; “error”.

Tambien podemos decir:
Map <int, dynamic> map; //En los mapas es en el lugar mas normal que nosotros podemos encontrar la palabra dynamic en su uso, nos funcionara sin ningún problema, es muy funcional.

// Poder agregar un valor también podemos hacerlo de la siguiente forma:

map[3] = ‘Azul’;
print (map);

Salida: {1: Rojo, 2: Verde, 3: Azul}

// De esta forma podemos hacer la asignación de cualquier valor que este permitido, recuerden que lo definimos como int y String o en este caso dynamic.

Diferencia de usarlo como string o dynamic:

map[4] = 100;
print (map); Salida de dynamic = {1: Rojo, 2: Verde, 3: Azul, 4: 100}

map[4] = 100;
print(map); Salida tipo String = No podemos realizar la ejecución porque se da un error, en ese caso el String solo lo dejamos en ‘Rosa’ (tipo String) y ya esta.

Map al igual que una lista o un set tiene propiedades que nos van a ayudar bastante a trabajar con ella, como pueden ser eliminar una posición como pueden ser:

map.remove(2);
Salida: {1: Rojo, 3: Azul, 4: Rosa} = Elimino la posicion 2 con el numero y todo.

print(map.isEmpty); = esto comprueba si el map esta vacio y si aparece false es porque no esta vacio.

print(map.length); = para conocer la longitud y saber cuantos elementos hay en el map.

// Declare using Maps Literals
  var gifts = {
    // Key:    Value
    'first': 'partridge',
    'second': 'turtledoves',
    'fifth': 'golden rings'
  };


  // Declare using Map Constructor
  var colours = Map();
  colours[0] = 'Red';
  colours[1] = 'Green';
  colours[2] = 'Blue';

  // Add element
  gifts['fouth'] = 'book';

  //Remove element
  gifts.remove('second');

  print(gifts.length);
  print(gifts.isNotEmpty);

ESTOS SON TODOS MIS APUNTES EN CODIGO, ASI ENTIENDO YO. SALUDOS.

import 'package:untitled/untitled.dart' as untitled;

main(List<String> arguments) {
  int valInt = 1;
  double valDouble = 2.0;
  String valstring = "Hola mundo,";
  dynamic valbool = true; //permite cambiar el tipo que contiene

  print('$valstring mi nombre es Joseph' + ' uso simbolo de mas');
  // al poner triple comilla se puede hacer saltos de linea para textos largos
  //la forma correcta de concatenar es usando $ (pesitos)

  print(valInt);
  print(valDouble);
  print(valstring);
  print(valbool);

  //COLECCIONES: LIST Y SET
  List<String> list; // asi se declara
  list =['Negro', 'Rojo'];

  list.add('Verde'); // es para agregar a la lista, por defecto se ira al final
  list.removeLast(); //es para eliminar el ultimo de la lista
  print(list);

  List<String> listAux = ['Azul', 'Rosa']; // esta es otra lista
  list.addAll(listAux); //este metodo es para agregar una lista en otra
  print(list);

  list.removeAt(2); // eliminar por indice
  print(list);

  //set
  Set set; // Asi se declara
  set = Set.from(['Juan', 'Pedro', 'Moises']); // esta es una lista con set
  print(set);

  set.add('Mateo');//aqui se agrega al final de la lista
  print(set);

  set.remove('Juan'); // aqui se tiene q especificar que es lo que deseas borrar
  print(set);

  //DICCIONARIO, dynamic es frecuentemente utilizado en los diccionarios, ya que puede cambiar su tipo de dato
  Map<int, dynamic> map; // asi se declara un diccionario, puedes declarar de que tipo quieres que sea
  map = {1:'Rojo', 2:'Verde'}; // asi es su estructura
  print(map);

  map[3]='Azul'; // asi se asigna un valor a un diccionario
  print(map);

  map[4]=100; // al colocar dynamic se puede poner cualquier tipo de dato a una variable
  print(map);

  map.remove(2); // removiendo la posicion dos
  print(map);

  print(map.isEmpty); // este metodo es para saber si la lista esta vacio o no
  print("En la lista tenemos: ${map.length} elementos"); // este metodo es para saber cuantos elementos tenemos
}```
main(List<String> args) {
  List<String> lista;
  lista=['Negro','Rojo'];

  lista.add('Blanco');

  print(lista);

  lista.remove('Blanco');

  print(lista);

  lista.removeLast();

  List<String> ListAux = ['Azul','Verde'];

  lista.addAll(ListAux);

  print(lista);


  lista.removeAt(2);

  print(lista);

  Set set;

  print(set);

  set= Set.from(['Freddy','Pedro']);

  print(set);

  set.add('Monica');

    print(set);

  set.remove('Freddy');

  print(set); 

}```

Para los que cuentan con intellij estas recomendaciones del lenguaje son importantes

para los que se cansaron de escribir en intellij el punto y coma del final, pueden
"Press Ctrl-Shift-Enter to complete the current statement (adding semicolons,
braces and everything as required) and move to the next line."

Los Maps, también llamadas Hash o Diccionarios son objetos que tienen una asociación entre llaves y valores.

Una pena, esta muy mal planteado este curso desde un principio. No me dan ganas de terminarlo.

Los map son colecciones que en vez de tener un indice como las listas, se referencian con un sistema de claves(llaves) para poder acceder a ellos, la llave puede ser cualquier tipo de dato y no puede repetirse una llave.

Map + dart + flutter debe hacer cosas muy interesantes en firebase