对列表进行排序时,使用内嵌 java Comparator(使用匿名内部类)与实现单独的自定义 Comparator 类之间是否存在任何性能差异?
1.
public class SortByErrorComparator implements Comparator<WorkflowError> {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
}
Collections.sort(list, new SortByErrorComparator()) ;
2.
Collections.sort(list, new Comparator<WorkflowError>() {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
});
还有,什么时候调用compare()
方法?
最佳答案
还有选项 3 - lambda Function
:
Collections.sort(list, (a, b) -> a.getErrorCode().compareTo(b.getErrorCode()));
根据 this benchmark data,这应该快 2 倍左右.
... 或(感谢 @JB Nizet)选项 4:
list.sort(Comparator.comparing(WorkflowError::getErrorCode))
关于java - Java 中的内联比较器与自定义比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995101/