Java 8 führt eine neue Standardmethode für die Schnittstelle List
ein, um sie zu sortieren. Es ist Signatur:Warum list.sort die optionale API nicht verwendet
void sort(Comparator<? super E> c)
Die Dokumentation sagt:
Wenn der angegebene Komparator null ist, werden alle Elemente in dieser Liste müssen die Comparable-Schnittstelle implementieren und die natürliche Ordnung Elemente verwendet werden soll.
Also, wenn Sie die Liste sortieren möchten, indem sie natürliche Ordnung ist (und dass Ihre Elemente vergleichbar sind), müssen Sie list.sort(null);
tun, welche Art von seltsam meiner Meinung.
Wenn sie eine Optional
verwendet, würde das Dokument angeben, dass Sie optional einen Komparator bereitstellen können, und dass, wenn es nicht bereitgestellt wird, es die Elemente bereits vergleichbar annehmen wird.
Ein list.sort(null);
Anruf würde in list.sort(Optional.empty());
umgewandelt werden.
Da es eine Methode ist, die es der Außenwelt aussetzt, würde ich es genauer finden.
Warum haben sie nicht stattdessen die neue optionale API verwendet?
... oder erzwingen Sie nur, dass Sie einen Nicht-Null-Vergleicher übergeben. Ich denke, das wäre viel einfacher. –
... oder passen Sie 'Collections' an, was eine Überladung' sort() 'liefert, die keine 'Comparator'-Argumente benötigt, um nach der natürlichen Reihenfolge zu sortieren? – rgettman
Oder pass einfach 'Comparator.naturalOrder()', es ist nicht so schwer und auch viel klarer als 'null'. –