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}Desafio
FácilCrie 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:
- Ler uma entrada de string representando o nome do projeto
- Ler múltiplas entradas de string representando os membros iniciais da equipe (a entrada terminará quando você receber
"initial_done") - Ler múltiplas entradas de string representando novos membros a serem adicionados (a entrada terminará quando você receber
"add_done") - Ler múltiplas entradas de string representando membros a serem removidos (a entrada terminará quando você receber
"remove_done") - Criar um Set com os membros iniciais da equipe
- Usar o método
add()para adicionar cada novo membro à equipe - Usar o método
remove()para remover cada membro especificado da equipe - 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 successfullySe 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 successfullySe 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 successfullySeu 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
}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
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos