San*_*s A 0 java int compare comparator java-stream
我有一个功能可以按 3 个整数字段对 pojo 列表进行排序。
目前我正在使用comparingInt()和thenComparingBy()。
但我可能会在两者之间得到一个空值。这会抛出一个NullPointerException.
为此,我想在末尾添加空值。Comparator.nullsLast()不适用于我的情况,因为我正在比较 3 个整数值。
有没有办法实现这一点......
由于您的组件Integer对象是null您不能使用comparingInt它们的。不使用comparingInt,首先创建一个辅助 null-safe Integer 比较器,然后在 Pojo 比较器中使用它。
Comparator<Integer> nullsLast = Comparator.nullsLast(Comparator.naturalOrder());
Comparator<Pojo> pojoComparator = Comparator.comparing(Pojo::getFirstInteger, nullsLast)
.thenComparing(Pojo::getSecondInteger, nullsLast)
.thenComparing(Pojo::getThirdInteger, nullsLast);
Run Code Online (Sandbox Code Playgroud)