TDictionary 的 遍歷

del88發表於2024-11-29

在 Delphi 中,TDictionary 是一個泛型字典類,用於儲存鍵值對。要遍歷 TDictionary,你可以使用其內建的列舉器(enumerator)。TDictionary 提供了一個 GetEnumerator 方法,該方法返回一個可以用於遍歷字典中所有鍵值對的列舉器。

以下是一個遍歷 TDictionary<TKey, TValue> 的示例:

uses
  System.SysUtils, System.Generics.Collections;

procedure TraverseDictionary;
var
  Dict: TDictionary<string, Integer>;
  Pair: TPair<string, Integer>;
begin
  // 建立並初始化字典
  Dict := TDictionary<string, Integer>.Create;
  try
    Dict.Add('One', 1);
    Dict.Add('Two', 2);
    Dict.Add('Three', 3);

    // 使用 for-in 迴圈和列舉器遍歷字典
    for Pair in Dict do
    begin
      WriteLn('Key: ', Pair.Key, ', Value: ', Pair.Value);
    end;
  finally
    // 釋放字典
    Dict.Free;
  end;
end;

begin
  TraverseDictionary;
  ReadLn; // 暫停以檢視輸出
end.

在這個示例中,我們首先建立了一個 TDictionary<string, Integer> 例項,並向其中新增了一些鍵值對。然後,我們使用一個 for-in 迴圈來遍歷字典。在迴圈中,Pair 變數是一個 TPair<string, Integer> 型別的例項,它表示字典中的一個鍵值對。透過 Pair.KeyPair.Value,我們可以訪問鍵和值,並將它們輸出到控制檯。

另外,你也可以直接使用 TDictionaryKeysValues 屬性來分別獲取所有的鍵和值,並遍歷它們:

var
  Key: string;
  Value: Integer;
begin
  // ...(字典的建立和初始化部分與上面相同)

  // 遍歷所有的鍵
  for Key in Dict.Keys do
  begin
    WriteLn('Key: ', Key);
  end;

  // 遍歷所有的值
  for Value in Dict.Values do
  begin
    WriteLn('Value: ', Value);
  end;

  // ...(字典的釋放部分與上面相同)
end;

但是,請注意,當你只遍歷鍵或值時,可能會失去鍵和值之間的關聯。因此,在大多數情況下,使用 for-in 迴圈和 TPair 是更好的選擇,因為它同時提供了鍵和值的資訊。

相關文章