Sendo que nos arrays podemos comparar posições diretas e nos Sets não, seria correto dizer que precisamos sobreescrever o hashcode quando usamos os sets, mas não precisamos isso quando usamos arrays?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Sendo que nos arrays podemos comparar posições diretas e nos Sets não, seria correto dizer que precisamos sobreescrever o hashcode quando usamos os sets, mas não precisamos isso quando usamos arrays?
Olá Paula, tudo bem?
Na verdade, a necessidade de sobrescrever os métodos equals e hashCode não está diretamente relacionada ao uso dos tipos Arrays ou de Sets. A sobrescrita desses métodos está relacionada com a necessidade de comparar objetos levando em conta as características de cada classe.
O método equals é utilizado para comparar se dois objetos são iguais, de acordo com algum critério definido pelo programador. Já o método hashCode é utilizado em algumas estruturas de dados (como os Sets) para indexar e comparar objetos de forma mais eficiente. Quando você usa uma estrutura de dados como o set, que utiliza o método hashCode, é importante que o método esteja implementado de forma coerente com o método equals, para que os objetos sejam comparados de forma consistente.
A necessidade de sobrescrever esses métodos não está relacionada diretamente com o uso de arrays ou de sets. No entanto, se você tiver uma classe que será utilizada como elemento de um Set, por exemplo, é importante implementar os métodos equals e hashCode de forma adequada, independentemente de como você irá armazenar objetos dessa classe (em um array, em um set, ou em qualquer outra estrutura de dados).