在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