Ich schreibe einige benutzerdefinierte Vergleicher, und ich möchte, dass sie null Elemente an den unteren Rand der Liste schieben, unabhängig davon, ob ich aufsteigend oder absteigend sortiere. Was ist eine gute Strategie oder ein gutes Muster dafür?Schöne allgemeine Art, Nullen ganz nach unten zu sortieren, egal?
Offhand:
- Schreiben Sie einfach getrennt auf- und absteigend Komparatoren, Code-Sharing wo möglich
- Delegate null Handhabung an einen anderen Klasse, entweder durch eine NPE oder werfen, indem sie explizit Aufruf
- Fügen Sie ein aufsteigendes Flag hinzu und setzen Sie bedingte Logik darin, um um die Nullen zu navigieren
- Wrap regelmäßige Komparatoren in einem null Handling-Klasse
Jede andere Strategien? Ich würde gern von irgendwelchen Erfahrungen mit verschiedenen Ansätzen und Fallstricken für die verschiedenen Strategien hören.
Ich stimme Ihrer Antwort zu, außer dass Sie das Ergebnis eines Vergleichs negieren. Ich wäre ziemlich unglücklich, wenn ich herausfände, dass ein Comparator einen ganzzahligen Vergleich mit Subtraktion durchführt, da diese Methode so viele Fallstricke hat. – jprete
@jprete: Ich glaube, du hast mich falsch verstanden. Ich werde bearbeiten. –
Ich akzeptiere diese Antwort aufgrund des Verweises auf die Bestellklasse von Google Collections. Bestehender bewährter Code ist die beste Lösung. Auch für die Warnung über Integer.MIN_VALUE. Aber ich schätze den @ dfa-Code unten sehr und wünschte, ich könnte beide Antworten akzeptieren. –