Frage

Wenn Java 5 Autoboxen hat, warum kann ich den Komparator nicht verwenden, um Primitive zu sortieren? Ein int würde nicht in a eingewickelt werden Integer?

War es hilfreich?

Lösung

Arrays.sort(..) haben dedizierte Überladungen für die Sortierung primitiver Arrays.

Wenn Sie neben den Standards spezielle Sortierregeln benötigen, müssten Sie das Autoboxen verwenden. Darüber hinaus müssten Sie Ihr Array in die Veränderung umwandeln Integer[], Weil int[] ist nicht autoboxiert.

Und wenn Sie nicht über Arrays sprechen, sondern über Sammlungen - Sie haben keine Wahl - können Sammlungen nur Objekte enthalten.

Andere Tipps

Weil Sie a nicht parameterisieren können a Comparator<T> - oder einen anderen parametrisierten Typ- mit einem primitiven Typ.

Ja, das ist massiv ärgerlich ... Sie können keine machen List<int> oder ein Map<String, boolean> usw. und Sie können nicht generische Methoden schreiben, die sowohl für Objekttypen als auch für Primitive funktionieren. Sie müssen dedizierte Methoden für jeden der 8 primitiven Typen haben. Aber das ist das Design, mit dem wir seit Java gebunden sind. 1. Schuld James Gosling ;-)

Wie Bozho betont, Arrays.sort(...) Bietet alle Sortiermethoden, die Sie benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top