In seguito alla risposta di Nikita Rybak, ho già un comparatore di enum e aggiungo solo la logica nulla da qui.
public enum Orden implements Comparator<CmunParametrosDTO> {
ByStrDescripcion {
public int compare(CmunParametrosDTO item1, CmunParametrosDTO item2) {
if (item1.getStrDescripcion() == null && item2.getStrDescripcion() == null)
return 0;
if (item1.getStrDescripcion() == null)
return 1;
else if (item2.getStrDescripcion() == null)
return -1;
return item1.getStrDescripcion().compareTo(item2.getStrDescripcion());
}
}
public abstract int compare(CmunParametrosDTO item1, CmunParametrosDTO item2);
public Comparator<CmunParametrosDTO> ascending() {
return this;
}
public Comparator<CmunParametrosDTO> descending() {
return Collections.reverseOrder(this);
}
}
In questo modulo posso chiamare il metodo di ordinamento sulla mia lista.
if(isBolOrdAscendente()) Collections.sort(listado, CmunParametrosDTO.Orden.ByStrDescripcion .ascending());
else Collections.sort(listado, CmunParametrosDTO.Orden.ByStrDescripcion .descending());
Cosa succede se si desidera ordinare in modo crescente i propri valori nulli di fronte ma discendenti sono alla fine. In sostanza capovolgere completamente la lista? – Jeremy
Ho usato questo codice e ho provato Collections.reverseOrder() e non ha funzionato con Collections.reverse (List); – Jeremy
@Jeremy sì, ho ragione, sto affrontando lo stesso problema tutti i dati del valore nullo vengono prima e i dati valutati arrivano alla fine. –