Delphi TDictionary <String, TDateTime> сортировать по значению

У меня такой 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

Любое предложение?

delphi,

2

Ответов: 1


3 принят

Словарь - неупорядоченная коллекция. Если он выглядит упорядоченным каким-либо конкретным образом, это просто случайно. Порядок элементов не определен каким-либо образом.

Если вы хотите заказать эти предметы, переведите их в массив ( TArray<string>) или список ( TList<string>или TStringList) и закажите их там.

Дельфы,
Похожие вопросы