cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
876 stars 636 forks source link

Desafio Lista Tarefas (SET) #36

Closed EdilbertoMorais closed 9 months ago

EdilbertoMorais commented 10 months ago

Boa tarde @cami-la, poderia analisar o meu código abaixo e apontar melhorias ou falhas?

Tentei fazer sem consulta ao seu código e cheguei nesse que vou anexar aqui. Após finalizar, efetue um depara com o teu e vi que tem algumas diferenças, porém, fiz os cenários de testes e passou em todos.

package set.pesquisaemset.listatarefas;

import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

public class ListaTarefas {
    // Atributo para armazenar as tarefas em um conjunto (Set).
    private Set<Tarefa> tarefasSet;

    // Construtor da classe ListaTarefas, inicializa o conjunto de tarefas como um HashSet vazio.
    public ListaTarefas() {
        this.tarefasSet = new HashSet<>();
    }

    // Método para adicionar uma tarefa ao conjunto.
    public void adicionarTarefa(String descricao){
        tarefasSet.add(new Tarefa(descricao, false));
    }

    // Método para remover uma tarefa do conjunto com base na descrição.
    public void removerTarefa(String descricao){
        Tarefa tarefaParaRemover = null;
        if (!tarefasSet.isEmpty()){
            // Itera sobre as tarefas para encontrar a que corresponde à descrição fornecida.
            for (Tarefa t: tarefasSet){
                if (t.getDescricao().equalsIgnoreCase(descricao)){
                    tarefaParaRemover = t;
                    break;
                }
            }
            // Remove a tarefa se encontrada, caso contrário, exibe uma mensagem de erro.
            if (tarefaParaRemover != null) {
                tarefasSet.remove(tarefaParaRemover);
            } else {
                System.out.println("Tarefa inexistente.".toUpperCase());
            }
        }else {
            System.out.println("A lista está vazia.".toUpperCase());
        }
    }

    // Método para exibir todas as tarefas no conjunto.
    public void exibirTarefas(){
        if (!tarefasSet.isEmpty()){
            System.out.println(tarefasSet);
        }else {
            System.out.println("A lista está vazia".toUpperCase());
        }
    }

    // Método para contar o número de tarefas no conjunto.
    public int contarTarefas(){
        int totalTarefas = 0;
        if (!tarefasSet.isEmpty()){
            totalTarefas = tarefasSet.size();
        }else {
            System.out.println("A lista está vazia.".toUpperCase());
        }
        return totalTarefas;
    }

    // Método para obter um conjunto de tarefas concluídas.
    public Set<Tarefa> obterTarefasConcluidas(){
        Set<Tarefa> tarefasConcluidas = new HashSet<>();
        if (!tarefasSet.isEmpty()){
            // Itera sobre as tarefas para encontrar as concluídas e adicioná-las ao conjunto.
            for (Tarefa t: tarefasSet){
                if (t.isConcluida()){
                    tarefasConcluidas.add(t);
                }
            }
            return tarefasConcluidas;
        }else {
            throw new RuntimeException("A lista está vazia".toUpperCase());
        }
    }

    // Método para obter um conjunto de tarefas pendentes.
    public Set<Tarefa> obterTarefasPendentes(){
        Set<Tarefa> tarefasPendentes = new HashSet<>();
        if (!tarefasSet.isEmpty()){
            // Itera sobre as tarefas para encontrar as pendentes e adicioná-las ao conjunto.
            for (Tarefa t: tarefasSet){
                if (!t.isConcluida()){
                    tarefasPendentes.add(t);
                }
            }
            return tarefasPendentes;
        }else {
            throw new RuntimeException("A lista está vazia.".toUpperCase());
        }
    }

    // Método para marcar uma tarefa como concluída com base na descrição.
    public void marcarTarefaConcluida(String descricao){
        if (!tarefasSet.isEmpty()){
            // Itera sobre as tarefas para encontrar a que corresponde à descrição fornecida e a
            // marca como concluída.
            for (Tarefa t: tarefasSet){
                if (t.getDescricao().equalsIgnoreCase(descricao)){
                    t.setConcluida(true);
                }
            }
        }else {
            System.out.println("Tarefa inexistente.".toUpperCase());
        }
    }

    // Método para marcar uma tarefa como pendente com base na descrição.
    public void marcarTarefaPendente(String descricao){
        if (!tarefasSet.isEmpty()){
            // Itera sobre as tarefas para encontrar a que corresponde à descrição fornecida e a
            // marca como pendente.
            for (Tarefa t: tarefasSet){
                if (t.getDescricao().equalsIgnoreCase(descricao)){
                    t.setConcluida(false);
                    break;
                }
            }
        }else {
            System.out.println("Tarefa inexistente.".toUpperCase());
        }
    }

    // Método para limpar o conjunto de tarefas, tornando-o vazio.
    public void limparListaTarefas(){
        if (!tarefasSet.isEmpty()){
            System.out.println("A lista está vazia.".toUpperCase());
        }else tarefasSet.clear();
    }
}

Se puder analisar e me mostrar onde posso melhorar, ficarei grato.

Abraços.

cami-la commented 9 months ago

Acabei de ver. Ficou ótimo! Parabéns. (: Olhando assim por cima, não mudaria nada.

EdilbertoMorais commented 9 months ago

Obrigado pelo retorno @cami-la