Junior — Middle
Хеш таблицасында колдонуу үчүн кандайча ачкыч маалыматтар уруксат берилет?
sobes.tech AI
AIден жооп
Хеш-таблицаларда (мисалы, Flutterда колдонулган Dartта) ачкычтар кандайдыр бир түрдөгү объекттер болушу мүмкүн, эгерде алар hashCode жана == методдорун туура ишке ашырса. Бул туура хеш маанисин эсептөө жана ачкычтарды салыштыруу үчүн зарыл.
Көп учурда, негизги түрлөрү колдонулат, мисалы, саптар (String), сандар (int), бирок бул методдорду кайра аныктоо менен өзгөчө класстарды да колдонсо болот. Мисалы:
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] = 'Программист';
print(map[p]); // Программист
}
Ошентип, ачкычтар өзгөрбөс жана hashCode жана == методдору туура иштелип чыгышы керек.