Zitat:
Function TIntegerDictionary.FindHash(aKey: Cardinal; Out h: Cardinal): Pointer;
Delphi-Quellcode:
Begin
h := HashFromInt(aKey) Mod fHashMod;
Result := fHashList[h];
While PIntHashEntry(Result) <> Nil Do
With PIntHashEntry(Result)^ Do
If heKey = aKey Then
Exit
Else
Result := heNext;
End;
Da wird also ein Hash von dem Integer gemacht und dann wird einie Liste durchsucht.
Wenn man den Integer nun direkt sucht, dann könnte man sich das Haschen sparen und müßte ebenfalls eine Liste durchgehn.
OK, hier würde man dann im schlimmsten Fall die komplette Liste durchgehn und bei der Map nur einen Teil.
Bei einer sortierten Liste würde man aber auch nur einen Teil der Liste durchgehn müssen.
(bei 1000 Einträgen in 'ner sortierten Liste wären auch nur maximal 10 Vergleiche nötig ... was etwa 'ner Hashmap mit fHashMod=100 entsprechen würde)
Oder seh ich das falsch?
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]