Menu
Coddy logo textTech

Criando um Conjunto

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 18 de 65.

Agora que você entende o que é um Set, vamos aprender como criar um. No Dart, você cria um Set usando chaves {} com os elementos separados por vírgulas, de forma semelhante a como você escreveria um conjunto matemático.

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

É importante não confundir esta sintaxe com a criação de um Map. Embora ambos usem chaves, um Set contém apenas valores, enquanto um Map contém pares chave-valor separados por dois pontos. Um Set vazio deve ser explicitamente declarado com um tipo para distingui-lo de um Map vazio.

Set<String> emptySet = <String>{};  // Set vazio
Map<String, int> emptyMap = {};     // Map vazio

Você também pode criar um Set com valores duplicados, mas lembre-se de que as duplicatas serão removidas automaticamente, deixando apenas elementos únicos na coleção final.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de marcação de blog criando um Set de tags exclusivas para uma postagem de blog. Seu programa deve:

  1. Ler uma entrada de string representando o título da postagem do blog
  2. Ler múltiplas entradas de string representando as tags a serem adicionadas à postagem (a entrada terminará quando você receber "done")
  3. Criar um Set de strings para armazenar as tags exclusivas
  4. Adicionar cada tag ao Set (as duplicatas serão removidas automaticamente)
  5. Imprimir os resultados da marcação do blog no formato exato mostrado abaixo

Por exemplo, se o título do blog for "Introduction to Dart Programming" e as tags forem "programming", "dart", "tutorial", "programming", "beginner", seu programa deve exibir:

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

Se o título do blog for "Web Development Tips" e as tags forem "web", "html", "css", "web", "html", "javascript", seu programa deve exibir:

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

Se o título do blog for "Getting Started" e as tags forem "guide", "basics", seu programa deve exibir:

Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully

Seu programa deve criar um Set usando a sintaxe de chaves {} e demonstrar como os Sets lidam automaticamente com a remoção de duplicatas. Armazene todas as tags de entrada em uma lista primeiro para mostrar o que foi originalmente inserido e, em seguida, crie o Set para mostrar as tags exclusivas. O Set deve exibir seu conteúdo no formato padrão de Set com chaves.

Folha de consulta

Crie um Set usando chaves {} com elementos separados por vírgulas:

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

Para Sets vazios, declare explicitamente o tipo para distinguir de Maps vazios:

Set<String> emptySet = <String>{};  // Set vazio
Map<String, int> emptyMap = {};     // Map vazio

Sets removem automaticamente valores duplicados, mantendo apenas elementos únicos.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o título da postagem do blog
  String? title = stdin.readLineSync();
  
  // Ler as tags até que "done" seja inserido
  List<String> allTags = [];
  String? tag;
  while ((tag = stdin.readLineSync()) != "done") {
    if (tag != null) {
      allTags.add(tag);
    }
  }
  
  // TODO: Escreva seu código aqui
  // Criar um Set a partir da lista de tags para obter tags únicas
  // Calcular o número total de tags únicas
  
  // Exibir os resultados
  print("Blog Post: $title");
  print("Tags added: $allTags");
  // Imprimir tags únicas no formato de Set
  // Imprimir a contagem total de tags únicas
  // Imprimir mensagem de status
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo