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.
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 ÚnicosPratique por conta própria: Compilador de Dart online