Java : How to use the `Comparator` interface

标签 java object comparator compareto

private class myComparator implements Comparator<Object>{

        @Override
        public int compareTo(Object obj1, Object obj1) {


            if ((obj1.getNumber() - obj2.getNumber()) == 0) {
                return 0;
            }
            if ((obj1.getNumber() > obj2.getNumber())  { 
                return 1;
            }

            return -1;
        }

嘿,我不知道如何在我正在实现的 Comparator 类中实现此compareTo 方法。我正在尝试按升序比较两个对象的整数值。但我真的不知道我要去哪里

稍后,我将在另一个类中将该类称为 collections.sort(someList, myComparator) 。

最佳答案

首先,Comparator需要 compare方法,而不是compareTo 。由于您的类(class)实现了 Comparator<Event> ,该方法的参数应该是 Event s。

private class myComparator implements Comparator<Event>
{
    @Override
    public int compare(Event obj1, Event obj1) {
        if (obj1 == null) {
            if (obj2 == null) {
                return 0;
            } else {
                return 1;
            }
        } else if (obj2 == null) {
            return -1;
        }
        return obj1.getNumber().compareTo(obj2.getNumber());
    }
}

请注意,我假设 getNumber()永远不会返回 null。如果它可以返回 null,则需要进行更多 null 检查。

关于Java : How to use the `Comparator` interface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30589607/

相关文章:

带有长度比较器错误的 Java TreeSet?

javascript - 这段 JavaScript 代码是什么意思?

sorting - Delphi 字符串变体比较是否使用 loInvariantLocale?如何在本地启用 loUserLocale?

java - 接口(interface)的奇怪泛型行为

java - 拼图 "requires transitive"不工作

java - Rest API curl 命令不返回值(java Spring)

php - 为什么 foreach 在结果对象上不起作用?

java - 覆盖优先级队列中无法识别的compareTo()

java - 用线检测拦截

Java有向图框架