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.

Folha de consulta

Use add() para inserir elementos em um Set. Se o elemento já existir, nada acontece:

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

usernames.add('diana');     // Adds 'diana' successfully
usernames.add('alice');     // Does nothing - 'alice' already exists

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

Use remove() para excluir elementos de um Set. Se o elemento não existir, nada acontece:

usernames.remove('bob');        // Removes 'bob'
usernames.remove('unknown');    // Does nothing - element not found

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

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