我有一个比较器代码,用于按foo字段排序。
List<Identity> myList = someValues....
//From RestController - sortMyList().accept(myList);
private Consumer<List<Identity> sortMyList() {
return myList-> myList.sort((o1,o2) -> compareByFoo().apply(o1,o2));
}
最后将compareByFoo函数定义为
foo = "Some IntegerValue;yyyy-mm-dd hh:mm:ss:ms" => thats why someFunctionWhichTellsWhichisGreater
private BiFunction<Identity,Identity,Integer> compareByFoo(){
return (o1,o2) -> {
String value1 = o1.getFoo();
String value2 = o2.getFoo();
someFunctionWhichTellsWhichisGreater()apply(value1,value2);
}
}
在从REST Controller调用的服务代码中发生排序。
在正常工作负载下,该比较器可以正常工作。但是在具有6个并行调用的性能测试方案中,它抛出
NULLpointerException at
String value2 = o2.getFoo(); Essentially o2 is null
我错过了使用Consumer或BiFunction的麻烦吗?
堆栈跟踪:
java.lang.NullpointerException at.... custom package....
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:366) ~[?:1.8.0]
at java.util.TimSort.sort(TimSort.java:231) ~[?:1.8.0]
at java.util.Arrays.sort(Arrays.java:1856) ~[?:1.8.0]
at java.util.ArrayList.sort(ArrayList.java:1473) ~[?:1.8.0]