Java 8 introduce un nuovo metodo predefinito nell'interfaccia List
per ordinarlo. E 'firma è:Perché list.sort non utilizza l'API opzionale
void sort(Comparator<? super E> c)
La documentazione dice:
Se il comparatore specificato è nullo, allora tutti gli elementi in questo elenco devono implementare l'interfaccia Comparable e naturale ordinamento degli elementi dovrebbe essere usato.
Quindi, se si desidera ordinare l'elenco da esso è ordine naturale (e che gli elementi sono confrontabili) si hanno a che fare list.sort(null);
che è un po 'strano del mio parere.
Se hanno utilizzato un Optional
, il documento dichiarerebbe che è possibile fornire facoltativamente un comparatore e che se non viene fornito presupporrà che gli elementi siano già comparabili.
Una chiamata list.sort(null);
si trasforma in list.sort(Optional.empty());
.
Poiché è un metodo che è esposto al mondo esterno, lo troverei più preciso.
Perché non hanno usato la nuova API Opzionale invece?
... o semplicemente ti costringono a passare in un comparatore non nullo. Penserei che sarebbe molto più semplice a tutto tondo. –
... o corrisponde a 'Collezioni', che fornisce un overload' ordinamento() 'che non accetta alcun argomento' Comparator' da ordinare secondo l'ordine naturale? – rgettman
Oppure basta passare a 'Comparator.naturalOrder()', non è così difficile, e anche molto più chiaro di 'null'. –