Java中的内联比较器与自定义比较器

排序列表时,使用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函数:

Collections.sort(list, (a, b) -> a.getErrorCode().compareTo(b.getErrorCode()));

根据this benchmark data,它应该快2倍左右.

……或(感谢@JB Nizet)选项4:

list.sort(Comparator.comparing(WorkflowError::getErrorCode))

转载注明原文:Java中的内联比较器与自定义比较器 - 代码日志