Menu
Coddy logo textTech

Adicionando e Removendo de Conjuntos

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy. Lição 19 de 65.

Uma vez que você tenha um Set, você frequentemente precisará modificar seu conteúdo adicionando novos elementos ou removendo os existentes. Os métodos add() e remove() fornecem maneiras diretas de gerenciar os elementos do seu conjunto.

O método add() tenta inserir um novo elemento no conjunto. No entanto, como os conjuntos armazenam apenas valores únicos, se você tentar adicionar um elemento que já existe, o método simplesmente não faz nada - nenhum erro ocorre e o conjunto permanece inalterado.

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // Adiciona 'diana' com sucesso
usernames.add('alice');     // Não faz nada - 'alice' já existe

print(usernames);  // {alice, bob, charlie, diana}

O método remove() funciona recebendo o valor que você deseja excluir e removendo-o do conjunto. Se o elemento não existir no conjunto, o método simplesmente não faz nada, tornando-o seguro para uso sem verificação prévia.

usernames.remove('bob');        // Remove 'bob'
usernames.remove('unknown');    // Não faz nada - elemento não encontrado

print(usernames);  // {alice, charlie, diana}
challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de colaboração de equipe, adicionando novos membros e removendo os inativos de uma equipe de projeto. Seu programa deve:

  1. Ler uma entrada de string representando o nome do projeto
  2. Ler múltiplas entradas de string representando os membros iniciais da equipe (a entrada terminará quando você receber "initial_done")
  3. Ler múltiplas entradas de string representando novos membros a serem adicionados (a entrada terminará quando você receber "add_done")
  4. Ler múltiplas entradas de string representando membros a serem removidos (a entrada terminará quando você receber "remove_done")
  5. Criar um Set com os membros iniciais da equipe
  6. Usar o método add() para adicionar cada novo membro à equipe
  7. Usar o método remove() para remover cada membro especificado da equipe
  8. Imprimir os resultados do gerenciamento da equipe no formato exato mostrado abaixo

Por exemplo, se o nome do projeto for "Mobile App Development", os membros iniciais forem "Alice", "Bob", "Charlie", os novos membros a adicionar forem "Diana", "Alice", "Eve", e os membros a remover forem "Bob", "Frank", seu programa deve exibir:

Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfully

Se o nome do projeto for "Website Redesign", os membros iniciais forem "John", "Sarah", os novos membros a adicionar forem "Mike", "John", e os membros a remover forem "Sarah", "Unknown", seu programa deve exibir:

Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfully

Se o nome do projeto for "Data Analysis", os membros iniciais forem "Emma", os novos membros a adicionar forem "Tom", "Lisa", e os membros a remover forem "Emma", seu programa deve exibir:

Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfully

Seu programa deve demonstrar que o método add() não faz nada ao tentar adicionar um membro que já existe, e o método remove() não faz nada ao tentar remover um membro que não existe. Armazene as listas de entrada para mostrar quais operações foram tentadas e, em seguida, mostre o conteúdo do Set após cada operação para demonstrar a natureza única dos Sets.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome do projeto
  String? projectName = stdin.readLineSync();
  
  // Ler os membros iniciais da equipe
  List<String> initialMembers = [];
  String? member;
  while ((member = stdin.readLineSync()) != "initial_done") {
    initialMembers.add(member!);
  }
  
  // Ler novos membros para adicionar
  List<String> membersToAdd = [];
  while ((member = stdin.readLineSync()) != "add_done") {
    membersToAdd.add(member!);
  }
  
  // Ler membros para remover
  List<String> membersToRemove = [];
  while ((member = stdin.readLineSync()) != "remove_done") {
    membersToRemove.add(member!);
  }
  
  // TODO: Escreva seu código abaixo
  // Criar um Set com os membros iniciais da equipe
  // Adicionar novos membros usando o método add()
  // Remover membros usando o método remove()
  
  // Imprimir os resultados no formato exigido
  print("Project: $projectName");
  // Adicionar as instruções de impressão restantes aqui
}
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

Pratique por conta própria: Compilador de Dart online