Junior — Middle
Que tipos de dados-chave são permitidos para uso em uma tabela de hash?
sobes.tech IA
Resposta da IA
Em tabelas de hash (por exemplo, em Dart, usado no Flutter), as chaves podem ser objetos de qualquer tipo, desde que implementem corretamente os métodos hashCode e ==. Isto é necessário para o cálculo correto do valor hash e comparação das chaves.
Normalmente, são utilizados tipos primitivos, como strings (String), números (int), mas também podem ser utilizados classes personalizadas se estes métodos forem sobrescritos. Por exemplo:
class Person {
final String name;
final int id;
Person(this.name, this.id);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Person && runtimeType == other.runtimeType && id == other.id;
@override
int get hashCode => id.hashCode;
}
void main() {
var map = <Person, String>{};
var p = Person('Alice', 1);
map[p] = 'Desenvolvedor';
print(map[p]); // Desenvolvedor
}
Assim, as chaves devem ser imutáveis e ter métodos hashCode e == corretamente implementados.