我想为空的领域之一排序对象的列表。
为了避免NullPointerexception
我使用Comparator.nullsLast
。不过例外仍然存在:
public class Test {
public static void main(String[] args) {
List<Bean> l = new ArrayList<>();
for (int i=0;i<5;i++) {
Bean b = new Bean("name_"+i,i);
l.add(b);
}
l.get(2).setVal(null);
System.out.println(l);
Collections.sort(l, Comparator.nullsLast(Comparator.comparing(Bean::getVal)));
System.out.println(l);
}
static class Bean{
String name;
Integer val;
// omit getters & setters & constructor
}
}
我怎样才能解决这类型的列表?
您应该使用Comparator.nullsLast
两次:
list.sort(nullsLast(comparing(Bean::getVal, nullsLast(naturalOrder()))));
nullsLast
将处理情况下,当Bean
对象为空。nullsLast
将处理案件时的返回值Bean::getVal
是零。如果你确定没有任何null
您的列表中值,则可以省略第一个nullsLast
(由@Holger说明):
list.sort(comparing(Bean::getVal, nullsLast(naturalOrder())));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句