Реализация по умолчанию будет работать очень хорошо с ключом TObject. Равенство определяется как идентичность объекта, так же, как при тестировании if A=B
. Хеш - это просто адрес ссылки - он не может быть более эффективным.
Код выглядит так:
function TObject.Equals(Obj: TObject): Boolean;
begin
Result := Obj = Self;
end;
function TObject.GetHashCode: Integer;
begin
Result := Integer(Self);
end;
Поиск в хешированном словаре не требует поиска. Это высокоэффективная операция O (1). Я думаю, вам стоит прочитать статью Wikipedia .