Closed BrunoMedeiros14 closed 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.
equals()
.hashCode()
é retornar um valor numérico que representa o objeto de forma única. Esse valor é usado pelos algoritmos de estruturas de dados baseadas em hash para localizar e organizar os objetos.equals()
, eles também tenham o mesmo valor de hash retornados pelo método hashCode()
. Portanto, sempre que você sobrescrever o método equals()
, é necessário também sobrescrever o método hashCode()
para garantir a consistência entre os dois métodos.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!
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()
ehashcode()
, 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 doequals()
ehashcode()
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 doequals()
ehashcode()
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.