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

标签 java performance comparator

对列表进行排序时,使用内嵌 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/

相关文章:

java - 调整 JFrame 大小时去除组件之间的额外空间

java - 在 LibGDX 中使用抽象屏幕

performance - Oracle PL/SQL 中的延迟更新

java - 为什么我会收到这个结果? java

ios - 启用 ARC 时,NSComparator 在对 NSArray 进行排序时更改行为

java - 当所有字段(包括分隔符,但不包括年份)都是可选时,在 Java8 中解析 ISO 8601 日期

java - LibGDX FreeTypeFontGenerator NoSuchField 异常

sql-server - SQL Server - 列顺序重要吗?

java - 对象数组与索引列表+数组

c++ - 静态cpp中的非静态成员