Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#11

Re: TObjectlst - Index eines Objektes finden

  Alt 16. Feb 2010, 21:55
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]
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat