Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Seltsames Verhalten von IndexOf bei sortierter generischer Liste

  Alt 22. Feb 2013, 09:17
... fügt man weitere Elemente hinzu, so ist die Liste nicht automatisch sortiert, aber für die Bestimmung des Item-Index wird der Comparer bemüht ...
Wieso erwartest Du, das die Liste automatisch sortiert ist? Das wäre doch performancetechnisch völliger Quark und ist außerdem nicht die Aufgabe einer Liste.
Ich erwarte doch nicht, dass die Liste sich automatisch selber sortiert. Aber ich erwarte eben von einer Liste, dass ich mit IndexOf den Index des Elements in der Liste bekomme, also
Delphi-Quellcode:
MyIndex := 4;
Assert( MyList.IndexOf( MyList[MyIndex] ) = MyIndex );
Den Comparer habe ich jetzt erweitert zu
Delphi-Quellcode:
  LList := TObjectList<TItem>.Create( TComparer<TItem>.Construct(
        function( const L, R : TItem ) : Integer
    begin
      Result := L.Value - R.Value;
      if Result = 0
      then
        Result := Integer( L ) - Integer( R );
    end ) );
bzw. im originalen Code merke ich mir einfach den Index und der Kas ist gegessen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat