java - 在java中实现Comparator的compare方法的最佳方法?

标签 java compare compareto

我编写了一个比较器,它按升序排序,如下所示。效果很好。

Collections.sort(resultList,new Comparator<MyModelClass>() {
            @Override
            public int compare(MyModelClass o1, MyModelClass o2) {
                Integer id1= o1.getId();
                Integer id2= o2.getId();
                if(id1 == null && id2 == null) {
                    return 0;               
                }else if(id1 != null && id2 == null) {
                    return -1;
                } else if (id1 == null && id2 != null) {
                    return 1;
                } else {                
                    return id1.compareTo(id2);
                }
            }
        });

这样实现好不好?请帮助我?

谢谢!

最佳答案

它看起来可读性很好,但稍微更有效的方法可能是:

public int compare(MyModelClass o1, MyModelClass o2) {
    Integer id1= o1.getId();
    Integer id2= o2.getId();
    if (id1 == null) {
        return id2 == null ? 0 : 1;
    }
    if (id2 == null) {
        return -1;
    }
    return id1.compareTo(id2);
}

甚至:

public int compare(MyModelClass o1, MyModelClass o2) {
    Integer id1= o1.getId();
    Integer id2= o2.getId();
    if (id1 == null) {
        return id2 == null ? 0 : 1;
    }

    return id2 == null ? -1 : id1.compareTo(id2);
}

关于java - 在java中实现Comparator的compare方法的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757088/

相关文章:

Swift:将类型作为参数发送并将变量的类型与其进行比较

VB6 对象比较

Java在ArrayList上实现比较器

Java 套接字 - 使用线程将任何客户端输入发送到所有其他客户端

java - 网络信息 android ip 倒置问题

java - Spring REST - 从 JSON 输入将实体添加到数据库 - 数据库外键错误

c++ - vector 到 vector 字符串比较搜索的问题

java - itext 中的阿拉伯语

visual-studio-2010 - 为什么运算符在 C++-CLI 中不起作用?

java - 比较无法正常工作