cami-la / desafio-poo-dio

874 stars 1.35k forks source link

Uso do equals() e hashcode() #25

Closed BrunoMedeiros14 closed 1 year ago

BrunoMedeiros14 commented 1 year ago

Olá @cami-la! Eu fiz seu curso de collections e atualmente estou acabando de fazer o desafio-poo-dio, no qual me surgiu uma dúvida que eu não consegui sanar em outras issues ou no fórum. A dúvida é relativa a sua orientação quanto ao uso da sobrescrita do método equals() e hashcode(), pelo que eu entendi através do curso de collections e outras pesquisas, eu devo realizar a sobrescrita desses métodos em classe na qual eu vou inserir dentro do Set, no entanto, foi observado que você fez o uso do equals() e hashcode() justamente nas classes Dev e bootcamp, sendo esses, classes que contém listas, mas não estão dentro de listas. Gostaria de saber se não seria mais adequado o uso do equals() e hashcode() nas classes Curso e Mentoria ou até mesmo, apenas na Conteudo de forma que venha gerar um gash sem incluir carga horária e data, até mesmo por armazenar Curso e Mentoria no mesmo set definindo-os com o tipo da classe Conteudo. Obrigado desde já por sua resposta, e gostaria de agradecer também pelo seu excelente trabalho e desenvolvimento tanto das aulas e até mesmo do README.md que é tão claro.

cami-la commented 1 year ago

Oi, @BrunoMedeiros14 tudo bem? Primeiramente muito obrigada pela pergunta, bem pertinente. No começo também tinha dúvidas, vamos lá:

Os métodos equals() e hashCode() são utilizados quando queremos trabalhar com a comparação e a organização de objetos em estruturas de dados, como coleções (por exemplo, listas, conjuntos e mapas).

Essa sua dúvida: "Gostaria de saber se não seria mais adequado o uso do equals() e hashcode() nas classes Curso e Mentoria ou até mesmo, apenas na Conteudo de forma que venha gerar um gash sem incluir carga horária e data, até mesmo por armazenar Curso e Mentoria no mesmo set definindo-os com o tipo da classe Conteudo."

Não entendi muito bem onde os métodos equals() e hashCode() iriam ajudar.

No geral, é bem pontual quando precisamos alterar esses métodos. Geralmente usamos a forma que já vem por padrão do Java que vem da classe Object.

Enfim, essa explicação foi bem superficial, mas acredito que "deu um norte". Ajudei?

Aaah, e muito obrigada pelo feedback. <3 Inclusive estou regravando os cursos, espero que goste!