Junior — Middle
Кадом намудҳои маълумоти калидӣ барои истифода дар ҷадвали хеш иҷозат дода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар ҳошияҳои хеш (масалан, дар Dart, ки дар Flutter истифода мешавад) калидҳо метавонанд объектҳои ҳар гуна навъ бошанд, шарти он ки онҳо методҳои 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 ва == дуруст иҷро шаванд.