cami-la / desafio-poo-dio

874 stars 1.35k forks source link

Dúvida sobre remoção de um item de um LinkedHashSet<> #44

Closed caiobukvar closed 2 months ago

caiobukvar commented 2 months ago

Ao progredir, o conteúdo de 'conteudosInscritos' deveria ser limpo, certo?

public void progredir(){
        //pegando o primeiro conteúdo, em ordem de adição dos mesmos.
        Optional<Conteudo> conteudo = this.conteudosInscritos.stream().findFirst();

        if (conteudo.isPresent()) {
            this.conteudosConcluidos.add(conteudo.get());
            this.conteudosInscritos.remove(conteudo.get());
        } else {
            System.err.println("Você não está matriculado em nenhum conteúdo!");
        }
    }

Com o código acima a remoção deveria ocorrer, porém, ao rodar o programa, resulta em:

Conteúdos inscritos Caio [Curso{titulo='Curso Javascript DIO'descricao='Este curso abordará os básicos de Javascript.'cargaHoraria=4}, Curso{titulo='null'descricao='null'cargaHoraria=0}, Mentoria{titulo='Mentoria Java DIO'descricao='Esta mentoria será sobre os básicos de Java.'data=2024-05-29}]
-
Conteúdos inscritos Caio [Curso{titulo='null'descricao='null'cargaHoraria=0}, Mentoria{titulo='Mentoria Java DIO'descricao='Esta mentoria será sobre os básicos de Java.'data=2024-05-29}]
Conteúdos concluídos Caio [Curso{titulo='Curso Javascript DIO'descricao='Este curso abordará os básicos de Javascript.'cargaHoraria=4}]
XP: 40.0
--------
Conteúdos inscritos Dev Solo [Curso{titulo='Curso Javascript DIO'descricao='Este curso abordará os básicos de Javascript.'cargaHoraria=4}, Curso{titulo='null'descricao='null'cargaHoraria=0}, Mentoria{titulo='Mentoria Java DIO'descricao='Esta mentoria será sobre os básicos de Java.'data=2024-05-29}]
-
Conteúdos inscritos Dev Solo [Curso{titulo='null'descricao='null'cargaHoraria=0}, Mentoria{titulo='Mentoria Java DIO'descricao='Esta mentoria será sobre os básicos de Java.'data=2024-05-29}]
Conteúdos concluídos Dev Solo [Curso{titulo='Curso Javascript DIO'descricao='Este curso abordará os básicos de Javascript.'cargaHoraria=4}]
XP: 40.0

Process finished with exit code 0

Revi o código e está idêntico ao da aula, onde está o problema?

Link para o meu repo com o código: https://github.com/caiobukvar/santander-bootcamp-java-2024/tree/main/desafio-poo-bootcamp

cami-la commented 2 months ago

Oi, @caiobukvar. Tudo certinho??

Então, faz um tempo que não pego nesse projeto, mas você pode tentar fazer o seguinte:

public void progredir() {
    // Pegando o primeiro conteúdo, em ordem de adição dos mesmos.
    Optional<Conteudo> conteudo = this.conteudosInscritos.stream().findFirst();

    if (conteudo.isPresent()) {
        this.conteudosConcluidos.add(conteudo.get());

        this.conteudosInscritos.removeIf(c -> c.equals(conteudo.get()));
    } else {
        System.err.println("Você não está matriculado em nenhum conteúdo!");
    }
}

Veja se dessa forma funciona. Qualquer novidade me diz que te explico sobre o removeif

caiobukvar commented 2 months ago

Oi, @caiobukvar. Tudo certinho??

Então, faz um tempo que não pego nesse projeto, mas você pode tentar fazer o seguinte:

public void progredir() {
    // Pegando o primeiro conteúdo, em ordem de adição dos mesmos.
    Optional<Conteudo> conteudo = this.conteudosInscritos.stream().findFirst();

    if (conteudo.isPresent()) {
        this.conteudosConcluidos.add(conteudo.get());

        this.conteudosInscritos.removeIf(c -> c.equals(conteudo.get()));
    } else {
        System.err.println("Você não está matriculado em nenhum conteúdo!");
    }
}

Veja se dessa forma funciona. Qualquer novidade me diz que te explico sobre o removeif

Não mudou em nada a resposta do App no console, continua retornando um array com Curso e Mentoria, porém todos null. :(

caiobukvar commented 2 months ago

O problema dos dados null foi por conta que, ao criar 2 cursos, tinha criado ambos como curso1 ao invés de curso1 e curso2, como na print:

image

Agora está limpando corretamente o conteúdo do LinkedHashSet!