Mam następujący problem:Nietypowe zachowanie dziwacza w delphi
Wprowadzam słownik z pewnymi wartościami i chciałbym przywrócić je w tej samej kolejności, w jakiej je wypełniłem.
Jakoś nie działa, kiedy przeglądam elementy, które są sortowane według kolejności nielogicznej (IMDO).
Po Poniższy program jest prowadzony:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Generics.Collections;
var
Dictionary: TDictionary<LongWord, string>;
aPair: TPair<LongWord, string>;
begin
Dictionary := TDictionary<LongWord, string>.Create;
Dictionary.add(1, 'First Item');
Dictionary.add(2, 'Second Item');
Dictionary.add(3, 'Third Item');
Dictionary.add(4, 'Forth Item');
Dictionary.add(5, 'Fifth Item');
Dictionary.add($FFFFFFFF, 'Longword Item');
for aPair in Dictionary do
writeln(aPair.Value);
readln;
end.
Mam następujące wyniki:
Forth Item
Longword Item
First Item
Third Item
Second Item
Fifth Item
Czy robię coś źle?
Testowany na XE5 i Rad Studio Berlin, te same wyniki.
Dzięki za pomoc.
Dzięki David, doceniamy! –
Trochę podstępne, ale to, co myślałem, aby sobie z tym poradzić, kiedy pierwszy raz mi odpowiedziałeś. Czy istnieje jakiś powód, dla którego został zaprojektowany w ten sposób? –
W tym przypadku implementacja wyszukiwania O (1) jest oparta na haszach i segmentach. I to naturalnie nie służy utrzymaniu porządku. Ponieważ ta kolekcja została zaprojektowana do uzyskiwania dostępu losowego przez nieuporządkowany klucz, dlaczego stosuje więcej funkcji do obsługi dostępu losowego za pomocą zamawianego klucza? –