Menu
Coddy logo textTech

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ío

Tambié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.

challenge icon

Desafío

Fácil

Crea 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:

  1. Leer una entrada de cadena que represente el título de la publicación del blog
  2. Leer múltiples entradas de cadena que representen las etiquetas que se agregarán a la publicación (la entrada terminará cuando recibas "done")
  3. Crear un Set de cadenas para almacenar las etiquetas únicas
  4. Agregar cada etiqueta al Set (los duplicados se eliminarán automáticamente)
  5. 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 successfully

Si 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 successfully

Si 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 successfully

Tu 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ío

Los 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
}
quiz iconPonte a prueba

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