Comparator.nullsLast不避空指针异常

rellocs木:

我想为空的领域之一排序对象的列表。

为了避免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
    }

}

我怎样才能解决这类型的列表?

ETO:

您应该使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档