Delphi中Hash表的使用方法

字號(hào):

在游戲開發(fā)中經(jīng)常需要保存一些數(shù)據(jù)結(jié)構(gòu),并且在使用的時(shí)候需要快速的查找出來.Hash表正是為了提高檢索速度而設(shè)計(jì)出來的.下面我就將我在用Delphi開發(fā)中使用Hash表的方法寫出來,希望對(duì)大家有一定的幫助!
    在Delphi中有一個(gè)THashedStringlist類,使用這個(gè)類可以實(shí)現(xiàn)Hash表的操作.使用這個(gè)類需要引用IniFiles頭文件.
    例如:我們定義的數(shù)據(jù)結(jié)構(gòu)是:
    Word-WRAP: break-Word" bgColor=#f3f3f3>以下是引用片段:
    RTest = record
    Key:Integer;
    Name:String[20];
    Sex:Boolean;
    Age:Integer;
    end;
    PTest = ^RTest ;
    1:創(chuàng)建Hash表.
    ScHash:=THashedStringlist.Create;
    2:將數(shù)據(jù)結(jié)構(gòu)加入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表的時(shí)候,首先我們檢查看這個(gè)Key是否在Hash表中,如果Index=-1則說明此Key不在Hash表中,則我們將這個(gè)結(jié)構(gòu)指針加入到Hash表中.
    3:將數(shù)據(jù)結(jié)構(gòu)從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;
    4:刪除Hash表
    在刪除Hash表的時(shí)候和一般的Tlist刪除一樣,使用Free.
    ScHash.Free;