首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 容器類全解析:TList、TObjectList、TStrings、TCollection 等

     編輯:Delphi

基礎容器:TList

指針動態數組,適合存儲對象引用。核心屬性/方法:Count、Items[Index]、Add/Delete/Insert/Remove/IndexOf/Sort。基於數組,隨機訪問 O(1),插入刪除 O(n)。

對象專用:TObjectList

  • 繼承 TList,強類型 (TObject)。
  • OwnsObjects (默認 True) 控制刪除/清理時是否自動 Free 對象。
  • 提供 FindInstanceOf 查找特定類實例。

組件容器:TComponentList

  • 繼承 TObjectList,類型縮窄為 TComponent。
  • 利用 FreeNotification 自動移除已釋放的組件引用。

類引用容器:TClassList

存儲 TClass 元類,適用於工廠模式、插件註冊。

棧/隊列:TStack / TQueue

  • 基於 TOrderedList (內部用 TList)。
  • TStack:後進先出 (LIFO),Push/Pop/Peek。
  • TQueue:先進先出 (FIFO),Push/Pop/Peek。

對象版棧/隊列:TObjectStack / TObjectQueue

強類型 TObject 版本,用法同非對象版。

整數容器:TIntList (自定義)

利用指針與整數同佔 4 字節,將 Integer 強轉 Pointer 存入 TList,提供類型安全封裝。

字符串容器:TStrings / TStringList

  • TStrings 為抽象基類,TStringList 為默認實現。
  • 支持 Add/Insert/Delete/IndexOf、鍵值對 (Name=Value)、關聯對象 (AddObject)。
  • UI 綁定:TListBox.Items 實為 TListBoxStrings,內部發送 LB_ADDSTRING 消息直接操作窗口控件。
  • THashedStringList:哈希索引優化 IndexOf/IndexOfName,查找快 100 倍,但頻繁增刪需重建哈希。

哈希指針容器:TBucketList / TObjectBucketList

鍵值對 (Pointer→Pointer / Object→Object),基於哈希表,不支持下標訪問,用 ForEach 遍歷。

線程安全:TThreadList

內部 TCriticalSection 保護所有操作,Duplicates 控制是否允許重複項。

接口容器:TInterfaceList

存儲介面引用,內部用 TThreadList 實現線程安全。

位容器:TBits

位級存儲 Boolean,Bits[Index] 讀寫,OpenBit 尋找首個 False。汇編優化,極快,但功能受限。

設計時持久化:TCollection / TOwnedCollection

  • TCollection 管理 TCollectionItem 子對象,支持 DFM 存儲 (WriteCollection/ReadCollection)。
  • 項目類型可自定義 (如 TCarriageItem),屬性可在 Object Inspector 編輯。
  • TOwnedCollection 自動處理 GetOwner,簡化代碼。

選擇指南

場景推薦容器
任意對象列表,需自動釋放TObjectList
組件列表,自動同步銷毀TComponentList
字符串列表,UI 綁定TStringList / 自定義 TStrings
鍵值查找,高性能THashedStringList / TBucketList
棧/隊列TStack / TQueue
整數/布爾緊湊存儲TIntList / TBits
設計時可編輯集合TCollection
多線程共享列表TThreadList / TInterfaceList
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved