5
Come posso ordinare TDictionary con una chiave di numero intero in ordine ascendente in Delphi 2009?Ordinamento di TDictionary con una chiave dell'intero in ordine crescente
Come posso ordinare TDictionary con una chiave di numero intero in ordine ascendente in Delphi 2009?Ordinamento di TDictionary con una chiave dell'intero in ordine crescente
I dizionari non sono ordinati e non possono essere ordinati (a parte l'hash, quali sono). È necessario utilizzare un altro contenitore se si desidera ordinare le chiavi o i valori. Ad esempio:
program Project1;
{$APPTYPE CONSOLE}
uses
Generics.Collections, Generics.Defaults, SysUtils;
var
LDict : TDictionary<integer, string>;
i, j : integer;
LArray : TArray<integer>;
begin
LDict := TDictionary<integer, string>.Create;
try
// Generate some values
Randomize;
for i := 0 to 20 do begin
j := Random(1000);
LDict.AddOrSetValue(j, Format('The Value : %d', [j]));
end;
WriteLn('Disorder...');
for i in LDict.Keys do
WriteLn(LDict.Items[i]);
// Sort
LArray := LDict.Keys.ToArray;
TArray.Sort<integer>(LArray);
WriteLn('Order...');
for i in LArray do
WriteLn(LDict.Items[i]);
finally
LDict.Free;
end;
Readln;
end.
TDictionaries sono ordinati per hash. Devi leggerlo in una sorta di lista che può essere ordinata. –