维护订单的键/值集合

Ken*_*ran 8 delphi generics collections

我需要一个delphi键/值集合,这将允许我按照插入/添加键/值对的相同顺序迭代集合.

TList<T>保证订单但TDictionary<T1, T2>不保证.

我想我总是可以定义一个,TList<TPair<Key, Value>>但使用它会更麻烦.

是否有符合我要求的内置集合类型或者包装TList<TPair<Key, Value>>是我的最佳选择?或者也许最好有一个TList<Key>和一个TDictionary<Key, Value>并遍历列表.

Rob*_*edy 3

如果您的键类型是string且您的值类型是 的后代TObject,请使用TStringList. 将您的值存储在Objects数组属性中。

SL.AddObject('foo', obj1);

SL.Add('bar');
i := SL.IndexOf('bar');
SL.Objects[i] := obj2;
Run Code Online (Sandbox Code Playgroud)

OwnsObjects如果需要,请设置该属性。