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

Colecciones

5/29
Recursos

Las colecciones son objetos de tipo estructuras de datos que almacenan diversos elementos, existen 2 tipos de colecciones, las listas y los sets.

En Dart los arreglos son Objetos ordenados de tipo List los cuales almacenan con un índice a cada uno de los elementos, mientras que los sets son colecciones que contiene valores únicos (no se pueden repetir) no ordenados (no se pueden recuperar mediante índices).

Una lista permitirá agregar los elementos que se desees, mientras que un set no permitirá volver a agregar un valor ya existente, pero tampoco mandará un error.

Aportes 53

Preguntas 5

Ordenar por:

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

RESUMEN DE LA CLASE

Colecciones

List
-Una de las colecciones más comunes en casi todos los lenguajes es el Array, en Dart los arreglos son objetos tipo List
-Trabaja con index 0
-Tiene muchas funciones por defecto

Declaración:

List list; //forma 1 List list<tipo>; //forma 2

Inicialización:

list = ["negro","blanco"];

Agregar elemento:

list.add("Rosa");

Borrar elemento:

list.removeAt(indice);

Borrar último elemento:

list.removeLast();

Añadir elementos de otra lista:

list.addAll(lista_auxiliar);

Set
-En este tipo de colección un elemento puede existir una sola vez. Si intentamos enviar uno repetido no lo permitirá (pero tampoco mandará un error)
-Esta no regresará en el mismo orden y por este mismo motivo no se puede pedir por index

Declaración:

Set set;

Inicialización:

set = set.from(['Argel', 'Juan']);

Agregar elemento:

set.add("Erika");

Eliminar elemento:

set.remove("Argel");

💻 También podemos combinar las listas y los sets según la necesidad que tengamos. En este caso eliminar elementos repetidos de una lista.

void main() {
  List listNames = ['Juan', 'Marcos', 'Juan', 'Pedro', 'Juan'];
  print((listNames.toSet()).toList());
}

¡ ¡ ¡ ¡ ¡ ¡ EL VOLUMEN ! ! ! ! !

a pesar de entender los ejemplos dados en las clases y entender que se puede usar un editor del lenguaje en linea para trabajar en los temas del curso, siento que hace falta una explicación como en otros cursos del proceso de instalación del entorno de desarrollo y un paso a paso de como crear el primero proyecto.

Para los que tienen problemas de como empezar y qué editor utilizar, a continuación les explico cómo lo estoy corriendo en Windows:

-Instalé el editor de códico Visual Studio Code.
-Instalé el SDK de Dart, a través de este instalador: https://gekorm.com/dart-windows/
-En Visual Studio Code, instalé la extensión de Dart para el intelliSense durante la escritura del código (El autocompletado).
-Creé una carpeta para el desarrollo del curso, luego dentro de alla creo los archivos en los que escribiré el código de cada clase, estos deben tener la extensión .dart, por ejemplo: clase1.dart (este es el nombre del archivo)
-Abrí una consola en la dirección donde tengo los archivos, y para correr cada archivo, escribo el siguiente comando en la consola: “dart clase1.dart” cabe recalcar que clase1,dart deben cambiarlo por el nombre de su archivo en caso de que tengan otro.

Aquí está el código comentado de la clase:

//Clase sobre colecciones
main(List<String> args) {

  // * List
  // * Una de las colecciones más comunes en casi todos los lenguajes es el Array,
  // * en Dart los arreglos son objetos tipo List.
  // * Trabaja con index 0 y tiene muchas funciones por defecto.

  // List estoEsUnaLista; Forma simple de declarar una lista.
  List<String> estoEsUnaLista; // * Se puede declarar una lista de String de esta manera.
  print(estoEsUnaLista); // ! Se prueba que es un objeto, por eso sin inicializarse, su valor es null.

  estoEsUnaLista = []; // ! Los corchetes sin contenido, simbolizan que ya se inicializó la lista, pero sin embargo no tiene ningún valor asignado.
  print(estoEsUnaLista); // ? Ya no es nulo.

  estoEsUnaLista = ['Amarillo', 'Azul'];
  print(estoEsUnaLista); // ? Ahora imprime su contenido.

  estoEsUnaLista.add("Rojo"); // ! Este es un método para agregar contenido nuevo a la lista sin sobreescribirla.
                              // ? Se remarca también que se pueden usar comillas simples '' o comillas dobles ""

  print(estoEsUnaLista); // * Tiene nuevo contenido.

  estoEsUnaLista.removeLast(); // ! Con este método, se elimina el último valor en la lista
  print(estoEsUnaLista); // ? Ya no está en la lista "Rojo".

  List<String> otraLista = ['Negro', 'Blanco']; // * Se pueden inicializar las listas al ser declaradas.
  print(otraLista); // * Contiene sus valores de inicialización

  estoEsUnaLista.addAll(otraLista); // ! De esta forma, estamos agregándole a la primera Lista, los valores de la segunda Lista.
  print(estoEsUnaLista); // ? Se puede ver los nuevos valores de la primera lista.

  estoEsUnaLista.removeAt(1); // ! Este es un método para eliminar objetos de una lista en un punto específico, para determinar cúal queremos borrar, usamos su index.
  print(estoEsUnaLista); // ? Se borró el color en el index 1 (segunda posición, debido a que la primera posición es el index 0).

  // * Set
  // * En este tipo de colección un elemento solo puede existir una vez.
  // * Esta no regresará en el mismo orden y por este motivo no se puede pedir por index.

  Set estoEsUnSet; // * Así se puede declarar un set
  print(estoEsUnSet); // ! Prueba de nuevo, que sin inicialización, su valor es nulo.
  
  estoEsUnSet = Set.from(['Carlos','Diego', 'Emmanuel', 'Johan']); // ! Inicializamos un Set, agregándole datos de una Lista.
  print(estoEsUnSet); // ? Se muestra el contenido del Set.

  estoEsUnSet.add('Paco'); // * Agregamos contenido igual que en una Lista, comparten este método.
  print(estoEsUnSet); // ? Ahora Paco forma parte del Set.

  estoEsUnSet.remove('Diego'); // ! Esta es la forma de eliminar contenido de un Set, podemos hacerlo específicando exctamente que queremos que se elimine de él.
  print(estoEsUnSet); // ? Diego ya no está más en el Set.
  

}

https://medium.com/dartlang/announcing-dart-2-2-faster-native-code-support-for-set-literals-7e2ab19cc86d

 Set<String> names = {"Cristian", "David"};
  print(names); // {Cristian, David}```

este curso es muy basico y hablan mucho

main(List<String> args) {
  List<String> list;

  list = ['Negro', 'Rojo'];

//Agrega elementos a la lista
  list.add('Rosa');

  print(list);

//Remueve el ultimo elemento
  list.removeLast();

  print(list);

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

  print(listAux);

//Agrega una lista a otra lista
  list.addAll(listAux);

  print(list);

//Elimina con index
  list.removeAt(2);

  print(list);

//No tiene orden set
  Set set;

  set = Set.from(['Pepe','Roberto','Pedro','Juan']);

  print(set);

  set.add('Erika');

  print(set);

//Se tiene que eliminar siempre por el nombre no con numero
  set.remove('Roberto');

  print(set);

}

Que opinan de usar dart como mi primer lenguaje para aprender a programar?

¿Cual seria la ventaja para usar uno u otra ? 😕

Soy yo o a alguien más le parece muy nervioso el docente ?

Dejo mi aporte, muy bueno!

main(List<String> arguments){
  //Armado de list por color
  List<String> list;
  list = ['Negro','Rojo'];
  //Agregar en list el color Rosa
  list.add('Rosa');
  print(list);
  //Remover el ultimo valor agregado en list
  list.removeLast();
  print(list);
  //Agregar en list mediante otra lista, este caso Aux con los colores " Azul y verde "
  List<String> listAux= ['Azul','Verde'];
  list.addAll(listAux);
  print(list);
  //Mediante list podemos remover el valor que queramos numerando la ubicacion de ese valor ejemplo "2=Azul"
  list.removeAt(2);
  print(list);

  //Armado de set por nombre
  Set set;
  print(set);
  //Agregar valores a Set con nombres
  set = Set.from(['Santiago','Juan','Pedro']);
  print(set);
  //Se agrega a Set el nombre de Erika
  set.add('Erika');
  print(set);
  //Se elimina de Set el nombre Santiago. 
  set.remove('Santiago');
  print(set);

Como puedo acceder a un valor declarado en el Set?

void main() {
   Set set;
  set=Set.from(['Pedro','Gaby','Rocio','Paul']);
  
  print(set);
  
  set.add('Juan');
  int longitud=set.length;
  print('$set, la longitud del set es: $longitud');
  
  print(set.elementAt(0));
  set.remove('Paul');
  longitud=set.length;
  print('$set, la longitud del set es: $longitud');
}

Result:

{Pedro, Gaby, Rocio, Paul}
{Pedro, Gaby, Rocio, Paul, Juan}, la longitud del set es: 5
Pedro
{Pedro, Gaby, Rocio, Juan}, la longitud del set es: 4

Set
Una colección de objetos en los que cada objeto puede aparecer solo una vez. Es decir, para cada objeto del tipo de elemento, se considera que el objeto está en el conjunto o no.
Por lo general, no está permitido modificar el conjunto (agregar o eliminar elementos) mientras se realiza una operación en el conjunto, por ejemplo, durante una llamada a forEach o containsAll. Tampoco está permitido modificar el conjunto mientras itera el conjunto en sí o cualquier Iterable respaldado por el conjunto, como los que devuelven métodos como where y map.
Fuente

https://api.dart.dev/stable/2.8.2/dart-core/Set-class.html

en serio que sin conocimientos previos , aqui este docente no te hace entender nada…

el set en su estructura se parece como un objeto json con esas llaves { }

Arreglen el audio por favor, no debería ser muy complicado. Porque así como está es muy difícil escuchar claramente lo que dice el maestro. Además de que parece grabado con un celular :c, lo demás me parece bien 😃

void main() {
   List ciudades;
  ciudades=['Tulcan','Ibarra'];
  ciudades.add('Cuenca');
  ciudades.add('Quito');
  print(ciudades);
  print(ciudades.reversed);
  
  ciudades.removeAt(0);
  print(ciudades);
  
}

Result:
[Tulcan, Ibarra, Cuenca, Quito]
(Quito, Cuenca, Ibarra, Tulcan)
[Ibarra, Cuenca, Quito]

Otra forma de declarar un Set vació:

var names = <String>{};
// Set<String> names = {}; // Esto trabaja, también.
// var names = {}; // Crea un map, no un set.

Muchas gracias.

No entiendo nada, pero es interesante y Dart Pad en linea funciona perfectamente.
https://dartpad.dev/

Los tipos coleciones de Dart son a su vez funciones que devuelven un objeto de dicha clase. Yo los declaro e inicializo en una sola línea con su propio constructor, de esta forma:

void main() {
  List<int> list = List(); // Lista comun de tipo int. Sin limites de tamaño.
  
	List<int> fixedList = List(3); // Lista de int pero con 
					    								//	limite de tamaño de 3 objetos.
  
  list.addAll([1,3,5,7,9]); //Añado 5 enteros a la lista
  print(list); // la imprimo
  
  list.add(13); //añado UN entero a la lista
  print(list);
  

	print(fixedList); // Imprimo la lista fija antes
										// de meterle valores: [null,null,null]


// Asigno los tres valores de la lista limitada
// pero reemplazando en lugar de agregar
  fixedList.setAll(0, [7,8,9]); 
  print(fixedList);
  
  fixedList.add(5);
}

Sin duda, Dart tiene mucha diferencia en sus colecciones comparado con otro lenguaje

void main() {
List<String> list;
list=[‘Negro’,‘Rojo’];
list.add(‘Anaranjado’);
list.remove(‘Rojo’);
print(list);

List<String> auxiliar;
auxiliar=[‘Azul’,‘Verde’];

list.addAll(auxiliar);
print(list);

list.removeAt(2);
print(list);

Set set;

set=Set.from([‘Elmer’,‘José’,‘Cristian’,‘Juanjo’]);
set.add(‘Pame’);
print(set);

set.remove(‘Elmer’);
print(set);
}

No muestra datos repetidos en set

Super!!

void main(List <String> arguments) {
  List<String> myList;//List<Tipo> variableName
  myList = ['Dato1','Dato2','Dato3'];//Llenar manualmente datos de la lista

  myList.add('Dato4');//Añadir dato a la lista
  print(myList);//Imprimir lista
  myList.removeLast();//Remover ultimo elemento de la lista
  print(myList);


  List<String> myAuxList = ['Dato5','Dato6'];//List<Tipo> variableName
  myList.addAll(myAuxList);//Llenar manualmente datos de la lista
  print(myList);

  Set mySet = Set.from(['1','Esta más chido que el 1']);// Set<tipo> nameSet = Declarar y llenar Set
  print(mySet.elementAt(1));//Imprimir elemenyo por index de un set
  mySet.remove('1');//Eliminar elemento de un set
  print(mySet);
}

cuando definimos el tipo de lista (< >) también podría ser de tipo Objeto?

También podemos hacer de la siguiente manera con los Sets:

Set<String>sistemasOperativos = {'windows','Ubuntu','macOs','OpenBSD'};
  print(sistemasOperativos);
  
  //Agregamos un elmento mas a la lista desordenada
  sistemasOperativos.add('Red Hat');
  print(sistemasOperativos);
  
  //Podemos tener otro conjunto de elementos
  Set<String>sistemasOperativosMoviles = {'Android','iOS'};
  print(sistemasOperativosMoviles);
  
  //Puedo agregar a una lista desordenada otra lista desordenada
  sistemasOperativos.addAll(sistemasOperativosMoviles);
  
  //imprimimos el resultado
  print(sistemasOperativos);
   
  // de la misma manera podemos porteger estos datos sin que se agreguen con la palabra reservada const
  
  Set<String>sistemasOperativosMoviles2 = const {'Android','iOS'};
  print(sistemasOperativosMoviles2);

La lista es una colección de datos que tienen el mismo tipo de datos. En otros idiomas, List se llama Array .
En la lista, los datos se almacenan de forma ordenada.
Se puede acceder a cada elemento individual de la lista por su número de índice. El número de índice siempre comienza desde 0.

qué son los argumentos de la función main?

List es un array.
Set es un conjunto. Para comprender set hay que tener claro la teoria de conjuntos.

Quizás faltó mostrar que, al agregar valores repetidos en un set, no pasa nada

Muy buen tema, importante y fácil de utilizar, muy similar a los demás lenguajes de programación. Se te hará fácil si los haz manejado antes.

Yo vengo para ver el uso de las colecciones, no entendía que hacían exactamente cuando las veía en los códigos de flutter de algunos desarrolladores

¿Que curso de Platzi me ayuda a correr el código en IntelliJ IDEA Community Edition 2019.3? Lo que sucede es que el botón de correr la aplicación me aparece en gris, me pregunto si instale mal el dart, pero no se como confirmar eso.

Una lista permitirá agregar los elementos que se desees, mientras que un set no permitirá volver a agregar un valor ya existente, pero tampoco mandará un error.

Todo claro, solo falto un ejemplo agregando valores repetidos, aun que la única diferencia es que en un Set no se muestran los valores repetidos y en la Lista si

Con este curso empezamos a formar las bases para Desarrollo Móvil, excelente para iniciar el aprendizaje en esta herramienta

nice!!

Por que es importante especificar de que tipo va a ser un objeto List ?

Entonces set es como en los videojuegos, cuando te pones el nick pero si tu nick es repetido no te deja

main(List<String> arguments) {
  
// declarar y asignar valores en la misma linea
  List list = ['negro', 'blanco'];
// agregar un valor
  list.add('rojo');

  print(list);
// agregar un valor en un lugar especifico
  list[0] = 'azul';

  print(list);
}```

Colecciones

//Declaracion de una lista
List<String> nombres;
nombres = [‘rojo’,‘negro’];

//Agregar un elemento
nombres.add(‘cafe’);

//Eliminar el ultimo elemento
nombres.removeLast();

print(nombres);
List<String> auxiliar = [‘Azul’, ‘Verde’];
nombres.addAll(auxiliar);

//Eliminar un elemento segun el index
nombres.removeAt(3);

//SET se podrian decir que son como objetos.
Set set;
set = Set.from([‘Morado’, ‘Amarillo’, ‘Naranja’]);

//Para agregar en un set
set.add(‘Hello World 😃’);
print(set);

// El resultado es Null.
Set set;
print(set);

// Si queremos agregar un valor:
set = Set.from([‘Angel’ , ‘Juan’ , ‘Pedro’]); // dato. El set usa llaves y no corchetes como lo es en un lista.
print(set);

// Si queremos un valor agregado
set.add(‘Erika’);
print(set);
// Esto es igual como se utilizan los list, es algo que se comparte entre list y set.

// Remover de set
set.remove (‘Angel’);
print(set);

Utilizacondo Set, no especifico el valor almacenado…

 List<String> lista;

  lista =['rojo'];

  lista.add('verde');

  List<String>lista2=['azul'];
  
  lista.addAll(lista2);
  lista.removeAt(1);
  lista.setAll(1, ['amarillo']);

  print(lista);

Es bastante diferente el manejo de listas en Dart comparado con Java o Kotlin.

Set
Una colección de objetos en los que cada objeto puede aparecer solo una vez. Es decir, para cada objeto del tipo de elemento, se considera que el objeto está en el conjunto o no.
Por lo general, no está permitido modificar el conjunto (agregar o eliminar elementos) mientras se realiza una operación en el conjunto, por ejemplo, durante una llamada a forEach o containsAll. Tampoco está permitido modificar el conjunto mientras itera el conjunto en sí o cualquier Iterable respaldado por el conjunto,

no puedo correr nada de dart en visualstudio code, ya tengo el pluging pero no me funciona