Crear un Conjunto
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 18 de 65.
Ahora que entiendes qué es un Set, aprendamos cómo crear uno. En Dart, creas un Set usando llaves {} con los elementos separados por comas, de manera similar a como escribirías un conjunto matemático.
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}Es importante no confundir esta sintaxis con la creación de un Map. Aunque ambos usan llaves, un Set contiene solo valores, mientras que un Map contiene pares clave-valor separados por dos puntos. Un Set vacío debe declararse explícitamente con un tipo para distinguirlo de un Map vacío.
Set<String> emptySet = <String>{}; // Conjunto vacío
Map<String, int> emptyMap = {}; // Mapa vacíoTambién puedes crear un Set con valores duplicados, pero recuerda que los duplicados se eliminarán automáticamente, dejando solo elementos únicos en la colección final.
Desafío
FácilCrea un programa que gestione un sistema de etiquetas de blog mediante la creación de un Set de etiquetas únicas para una publicación de blog. Tu programa debe:
- Leer una entrada de cadena que represente el título de la publicación del blog
- Leer múltiples entradas de cadena que representen las etiquetas que se agregarán a la publicación (la entrada terminará cuando recibas
"done") - Crear un Set de cadenas para almacenar las etiquetas únicas
- Agregar cada etiqueta al Set (los duplicados se eliminarán automáticamente)
- Imprimir los resultados del etiquetado del blog en el formato exacto que se muestra a continuación
Por ejemplo, si el título del blog es "Introduction to Dart Programming" y las etiquetas son "programming", "dart", "tutorial", "programming", "beginner", tu programa debería mostrar:
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfullySi el título del blog es "Web Development Tips" y las etiquetas son "web", "html", "css", "web", "html", "javascript", tu programa debería mostrar:
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfullySi el título del blog es "Getting Started" y las etiquetas son "guide", "basics", tu programa debería mostrar:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfullyTu programa debe crear un Set utilizando la sintaxis de llaves {} y demostrar cómo los Sets manejan automáticamente la eliminación de duplicados. Almacena todas las etiquetas de entrada en una lista primero para mostrar lo que se ingresó originalmente, luego crea el Set para mostrar las etiquetas únicas. El Set debe mostrar su contenido en el formato estándar de Set con llaves.
Hoja de referencia
Crea un Set usando llaves {} con elementos separados por comas:
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}Para Sets vacíos, declara explícitamente el tipo para distinguirlos de los Maps vacíos:
Set<String> emptySet = <String>{}; // Set vacío
Map<String, int> emptyMap = {}; // Map vacíoLos Sets eliminan automáticamente los valores duplicados, manteniendo solo elementos únicos.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el título de la publicación del blog
String? title = stdin.readLineSync();
// Leer etiquetas hasta que se ingrese "done"
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: Escribe tu código aquí
// Crear un Set a partir de la lista de etiquetas para obtener etiquetas únicas
// Calcular el número total de etiquetas únicas
// Mostrar los resultados
print("Blog Post: $title");
print("Tags added: $allTags");
// Imprimir etiquetas únicas en formato Set
// Imprimir el recuento total de etiquetas únicas
// Imprimir mensaje de estado
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única