Delphi中Hash表的使用方法(THashedStringlist)
2011-05-06 17:27
483 查看
TStringList是我们常用的字符串列表类型,用法就不在这里赘述,但是,在其数据项数增多时,其搜索(主要是name/key搜索和indexof搜索)性能会急剧下降,原因是TStringList的内部存储使用了链表形式,而搜索操作使用了循环遍历方式。
值得高兴的是,在iniFiles单元,Delphi为我们提供了THashedStringList类型,即,经过哈希处理的TStringList,它继承自TStringList,只是对搜索方法进行了优化,因此,我们完全可以放心的在大量字符串搜索的时候使用它来代替TStringList,而需要改变的只是在:=的后面用THashedStringList.create来代替TStringList.create,但其速度却提高了一个数量级。
在Delphi中有一个THashedStringlist类,使用这个类可以实现Hash表的操作.使用这个类需要引用IniFiles头文件.
例如:我们定义的数据结构是:
1:创建Hash表.
2:将数据结构加入Hash表中.
在加入Hash表的时候,首先我们检查看这个Key是否在Hash表中,如果Index=-1则说明此Key不在Hash表中,则我们将这个结构指针加入到Hash表中.
将数据结构从Hash表中删除.
删除Hash表
在删除Hash表的时候和一般的Tlist删除一样,使用Free.
值得高兴的是,在iniFiles单元,Delphi为我们提供了THashedStringList类型,即,经过哈希处理的TStringList,它继承自TStringList,只是对搜索方法进行了优化,因此,我们完全可以放心的在大量字符串搜索的时候使用它来代替TStringList,而需要改变的只是在:=的后面用THashedStringList.create来代替TStringList.create,但其速度却提高了一个数量级。
在Delphi中有一个THashedStringlist类,使用这个类可以实现Hash表的操作.使用这个类需要引用IniFiles头文件.
例如:我们定义的数据结构是:
RTest = record Key:Integer; Name:String[20]; Sex:Boolean; Age:Integer; end; PTest = ^RTest ;
1:创建Hash表.
ScHash:=THashedStringlist.Create;
2:将数据结构加入Hash表中.
var Index:Integer; p_Test:PTest; Index:=ScHash.IndexOf(IntToStr(p_Test.Key)); if Index=-1 then begin ScHash.AddObject(IntToStr(p_Test.Key),TObject(Integer(p_Test))); end;
在加入Hash表的时候,首先我们检查看这个Key是否在Hash表中,如果Index=-1则说明此Key不在Hash表中,则我们将这个结构指针加入到Hash表中.
将数据结构从Hash表中删除.
var Index:Integer; t_Object: TObject; Index:=ScHash.IndexOf(IntToStr(p_Test.Key)); if Index<>-1 then begin t_Object:=ScHash.Objects[Index]; ScHash.Delete(Index); end;
删除Hash表
在删除Hash表的时候和一般的Tlist删除一样,使用Free.
ScHash.Free;
相关文章推荐
- Delphi中Hash表的使用方法(THashedStringlist)
- Delphi 中的哈希表(1): THashedStringList
- Delphi 中哈希表TStringHash和THashedStringList性能速度
- 如何使用THashedStringList
- Delphi 中的哈希表(1): THashedStringList
- Delphi中Hash表的使用方法
- Delphi中的THashedStringList对象
- Delphi 中的哈希表(1): THashedStringList
- Delphi中Hash表的使用方法
- 谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
- Delphi中的THashedStringList对象
- 问题-Delphi 中使用TStringList后,报out of memory 的解决方法
- Delphi 中的哈希表(1): THashedStringList
- Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
- Delphi中的THashedStringList对象
- Delphi 中的哈希表(1): THashedStringList
- Delphi中Hash表的使用方法! 推荐
- 【转】谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
- [转]:Delphi 中的哈希表(1): THashedStringList
- Delphi THashedStringList用法