Perchè non posso usare comparatore per le primitive di ordinamento?
-
14-10-2019 - |
Domanda
Come Java 5 hanno autoboxing, perché non posso usare comparatore per le primitive di ordinamento? Un int
non sarebbe stato avvolto in un Integer
?
Soluzione
Arrays.sort(..)
hanno sovraccarichi dedicati per l'ordinamento array primitivi.
Se avete bisogno di tutte le regole di smistamento speciali oltre a quelli standard, temo che avrei dovuto usare autoboxing. In aggiunta a ciò, si avrebbe per trasformare l'array a Integer[]
, perché non è int[]
autoboxed.
E se non si parla di array, ma sulle collezioni - allora non avete scelta -. Collezioni possono contenere solo gli oggetti
Altri suggerimenti
Poiché non è possibile parametrizzare un Comparator<T>
- o qualsiasi altro tipo parametrizzato -. Con un tipo primitivo
Sì, questo è massicciamente fastidioso ... non è possibile fare una List<int>
o un Map<String, boolean>
ecc, e non è possibile scrivere metodi generici che il lavoro per entrambi i tipi di oggetti e primitive. Bisogna avere metodi dedicati per ciascuno degli 8 tipi primitivi. Ma questo è il disegno che siamo stati bloccati con Java dal 1. Blame James Gosling; -)
Come Bozho sottolinea, Arrays.sort(...)
fornisce tutti i metodi di ordinamento necessari.