我有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
有什么建议吗?
答案 0 :(得分:3)
字典是无序集合。如果看起来以任何特定的方式排序,那纯粹是偶然的。项目的顺序没有以任何方式定义。
如果您想订购这些商品,请将它们转移到数组(TArray<string>
)或列表(TList<string>
或TStringList
)并在那里订购。