在Nikita Rybak的回答之後,我已經有了一個枚舉比較器,並且只能從這裏添加null邏輯。
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);
}
}
在這種形式中,我可以調用我的列表中的排序方法。
if(isBolOrdAscendente()) Collections.sort(listado, CmunParametrosDTO.Orden.ByStrDescripcion .ascending());
else Collections.sort(listado, CmunParametrosDTO.Orden.ByStrDescripcion .descending());
來源
2013-01-10 23:40:19
ELD
如果你想排序,在前面提升它的空值,但是在降序時它們在最後。在本質上完全翻轉名單? – Jeremy 2015-03-17 15:29:12
我使用這段代碼並嘗試了Collections.reverseOrder(),並且它沒有與Collections.reverse(List)一樣工作。 – Jeremy 2015-03-17 15:51:41
@Jeremy是你是對的我面臨同樣的問題所有的空值數據先來,重要的數據到最後。 – 2016-03-10 06:45:17