Java 使用比较器排序-空指针异常
我试图在Java 使用比较器排序-空指针异常,java,java-8,Java,Java 8,我试图在Asc中对CalculationModelDetails进行排序,如果priceRange(getPriceRange()==null)将其放在排序列表的最后一位 我在这里遇到了一个空指针异常Comparator.comparating(CalculationModelDetail::getPriceRange,(s1,s2)->s2.compareTo(s1)) 当我运行测试时..您正在detail0中将priceRange设置为null,因此在获取priceRange值时进行排序时,
Asc
中对CalculationModelDetails
进行排序,如果priceRange(getPriceRange()==null)
将其放在排序列表的最后一位
我在这里遇到了一个空指针异常Comparator.comparating(CalculationModelDetail::getPriceRange,(s1,s2)->s2.compareTo(s1))代码>
当我运行测试时..您正在detail0
中将priceRange
设置为null,因此在获取priceRange
值时进行排序时,您正在对null引用调用compareTo
方法。这就是问题所在。
您需要在detailComparator
中处理此空值,但这不是应该由Comparator处理的。空值我需要按priceRange的Asc顺序对这些值进行排序,并放置空值(calculationModelDetail.getPriceRange()==null)在排序列表的末尾..@ArdentJavaLearner:但是detailComparator也正确地接收空值。。因此,必须处理这些值。您不想在这里设置排序顺序,那么您可以在s1或s2为null的情况下返回任何int。如果两个值仅可用,则转到compareTo.Done。。但这在编辑历史@ArdentJavaLearnerI中仍然可见。我查看了编辑历史。。。在我看来,这里面没有任何东西是一个通情达理/知识渊博的人会认为是安全敏感的。但是,如果你真的有顾虑,你应该按照你的建议去做