gpt4 book ai didi

performance - TDictionary 的默认 IEqualityComparer?

转载 作者:行者123 更新时间:2023-12-03 09:37:30 26 4
gpt4 key购买 nike

我刚读

"Any class that implements the IEqualityComparer interface is expected to provide the implementation for the Equals method." - (Delphi DocWiki)





"Any class that implements the IEqualityComparer interface is expected to provide the implementation for the GetHashCode method." - (Delphi DocWiki)



如果我创建 TDictionary<TObject, TObject>,TDictionary 的性能将如何?并且不实现 IEqualityComparer?

我还没有找到默认实现(在 Delphi 2009 中)。那么如何计算它们的键的哈希码呢?

如果它只是字典条目键中对象的内存地址,是否会按顺序执行对给定条目的搜索?

最佳答案

默认实现将使用 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文章。

关于performance - TDictionary<TObject, TObject> 的默认 IEqualityComparer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com