Ou isso é apenas para Set? Se eu usar o List, por exemplo, irei ter que sobrescrever o HashCode tbm?
Ou isso é apenas para Set? Se eu usar o List, por exemplo, irei ter que sobrescrever o HashCode tbm?
Coleções como HashMap e HashSet usam um valor hashcode de um objeto para determinar como ele deve ser armazenado dentro de uma coleção, e o hashcode é usado novamente para localizar o objeto em sua coleção.
A recuperação de hash é um processo de duas etapas:
1) usando hashCode()
2) pesquisa pelo elemento certo (usando equals())
O equals() é usado em vários momentos, não apenas em Listas e afins, exemplo
class Money {
int amount;
String currencyCode;
}
Money income = new Money(55, "USD");
Money expenses = new Money(55, "USD");
boolean balanced = income.equals(expenses)
Seria de esperar que income.equals (despesas) retorne verdadeiro . Mas com a classe Money em sua forma atual, isso não acontecerá.
A implementação padrão de equals () na classe Object diz que igualdade é o mesmo que identidade de objeto usando ==.
Nesse caso também é importante sobreescrever o equals()