Delphi TDictionary <string,tdatetime =“”>按值排序

时间:2016-10-14 15:48:05

标签: delphi

我有TDictionary<String, TDateTime>这样的

aDict := TDictionary<String, TDateTime>.Create;
try
    aDict.Add('Foo', StrToDateTime('2016-10-14 15:00:00'));
    aDict.Add('Bar', StrToDateTime('2016-10-14 14:00:00'));
    aDict.Add('Baz', StrToDateTime('2016-10-14 13:00:00'));
finally
    aDict.Free;
end;

如果我像这样循环字典:

for aKey in aDict.Keys do 
    WriteLn(aKey );

输出是:

Bar
Baz
Foo

默认顺序似乎是按字母顺序排列的,我希望在值上排序从最旧到最新的TDateTime的字典。预期的产出是:

Baz
Bar
Foo

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

字典是无序集合。如果看起来以任何特定的方式排序,那纯粹是偶然的。项目的顺序没有以任何方式定义。

如果您想订购这些商品,请将它们转移到数组(TArray<string>)或列表(TList<string>TStringList)并在那里订购。