我有一个字符串值列表。我使用比较器按特定顺序对它们进行排序,如下所示
public static final List<String> CUSTOM_LIST = Arrays.asList("Red", "Green", "Blue");
comparator = new Comparator<String>(){
@Override
public int compare(final String o1, final String o2){
return Integer.valueOf(CUSTOM_LIST.indexOf(o1))
.compareTo(Integer.valueOf(CUSTOM_LIST.indexOf(o2)));
}
};
所以比较我做
Collections.sort(listToSort,comparator);
或反向排序
Collections.sort(listToSort,Collections.reverseOrder(comparator));
现在我的列表中有空值,我希望它们总是在最后。我如何实现这一目标?
答案 0 :(得分:5)
比较界面返回一个标记两个对象之间差异的数字。请注意,由于总是希望空值在最后,我们必须确保返回的整数值比任何其他值更大(或更小),因为所有空值都将被拉到Collection
的一角。
comparator = new Comparator<String>(){
@Override
public int compare(final String o1, final String o2){
if(o1.isEmpty()) return Integer.MAX_VALUE;
else if (o2.isEmpty()) return Integer.MIN_VALUE;
else return Integer.valueOf(ModuleConstants.CUSTOM_LIST.indexOf(o1))
.compareTo(
Integer.valueOf(ModuleConstants.CUSTOM_LIST.indexOf(o2)));
}
};