6.TObjectStack和TObjectQueue類
這兩個類只是TStack和TQueue 類的簡單擴展,在鏈表中保存的是TObject的對象引用,而不是簡單的指針。
7.TIntList 類
到目前為止,我們看到的容器類中保存的都是指針或者對象引用(對象引用其實也是一種指針)。
那麼我們能不能在鏈表中保存原生類型,如Integer,Boolean或者Double等呢。下面的我們定義的類TIntList 類就可以在鏈表中保存整數,這裡我們利用了整數和指針都占用4個字節的存儲空間,所以我們可以直接將指針映射為整數。
8.TStrings類
出於效率的考慮,Delphi並沒有象C++和Java那樣將字符串定義為類,因此TList本身不能直接存儲字符串,而字符串列表又是使用非常廣泛的,為此Borland提供了TStrings類作為存儲字符串的基類,應該說是它除了TList類之外另外一個最重要的Delphi容器類。
要注意的是TStrings類本身包含了很多抽象的純虛的方法,因此不能實例化後直接使用,必須從TStrings類繼承一個基類實現所有的抽象的純虛方法來進行實際的字符串列表管理。雖然TStrings類本身是一個抽象類,但是它應該說是一個使用了Template模式的模版類,提供了很多事先定義好的算法來實現添加添加、刪除列表中的字符串,按下標存取列表中的字符串,對列表中的字符串進行排序,將字符串保存到流中。將每個字符串同一個對象關聯起來,提供了鍵-值對的關聯等等。
因為TStrings類本身是個抽象類,無法實例化,因此Delphi提供了一個TStringList的TStrings的子類提供了TStrings類的默認實現,通常在實際使用中,我們都應該使用TStringList類存儲字符串列表,代碼示意如下:
var TempList:TStrings;
begin
TempList:=TStringList.Create;
try
TempList.Add('字符串1');
…
finally
TempList.Free;
end;
end;
TStrings類的應用非常廣泛,很多VCL類的屬性都是TStrings類型,比如TMemo組件的Lines屬性,TListBox的Items屬性等等。下面將介紹一下TStrings類的常見用法。