5

我有一个实现 Comparable 接口的类。在这个类中,我需要重写 compareTo 方法以便按Long值对对象进行排序。

我不知道如何执行的是 Long 类型的比较。尝试检查值是否大于或小于另一个 Long 值时出现错误。我知道 Long 是 long 的对象,但不知道如何比较两个 Long 的。

代码示例:

public int compareTo(MyEntry<K, V> object) {
    if (this.value < object.value)
        return -1;
    if (this.value.equals(object.value))
        return 0;

    return 1;
}

错误信息:

           operator < cannot be applied to V,V
if (this.value < object.value)
                       ^

V,V长,长

4

6 回答 6

9

您的问题是,MyEntry<K, V>它没有告诉编译器您要比较的 Object 类型。它不知道您正在比较 Long 值。最好的方法是不用担心你正在比较什么类型的对象(假设你的对象实现了 Comparable),只需使用

return this.value.compareTo(object.value);

但如果您出于某种原因想要手动执行此操作,请执行以下操作:

public int compareTo(MyEntry<K, V> object) {
    if ((Long) this.value < (Long) object.value)
        return -1;
    if (this.value.equals(object.value))
        return 0;

    return 1;
}
于 2013-10-10T16:52:34.017 回答
8
Long l1 = new Long(3);
Long l2 = new Long(2);

return l1.compareTo(l2);

简单不?

于 2013-10-10T16:48:38.533 回答
2

它看起来像这样:

@Override
public int compareTo(MyEntry<K, V> object) {
        if (object == null) {
            throw new NullPointerException("Null parameter");
        } else if (!this.getClass().equals(object.getClass())) {
            throw new ClassCastException("Possible ClassLoader issue.");
        } else {
            return this.longValue.compareTo(object.longValue);
        }

}

巧合的是,我们最近做了一个关于 Java 比较的教程。也许它可以帮助你。

于 2013-10-10T16:55:56.043 回答
2

将 long 转换为 Long,然后使用 Long 的 compareTo 方法。

Java 结构良好,几乎所有可排序的类都有 compareTo 方法。

这是一个很好的 Java 实践。

@Override
                public int compare(long t1, long t2) {
                    return Long.valueOf(t1).compareTo(t2);
                }
于 2017-06-13T19:57:39.817 回答
0

使用 longValue() 方法比较长值。

例如:-

Long id1 = obj.getId();
Long id2 = obj1.getId();

if (id1.longValue() <= id2.longValue()) {
Sysout.......
}

assertTrue(id1.longValue() == id2.longValue())
于 2013-10-10T16:48:28.627 回答
-1

长 compareTo 命令可能会有所帮助。compareTo 方法返回一个整数值,以给出关于 long 是否相等、大于或小于彼此的答案。

Long l1 = new Long(63255);
 Long l2 = new Long(71678);
 int returnVal =  l1.compareTo(l2);

 if(returnVal > 0) {
    System.out.println("l1 is greater than l2");
 }
 else if(returnVal < 0) {
    System.out.println("l1 is less than l2");
 }
 else {
    System.out.println("l1 is equal to l2");
 }
于 2013-10-10T16:52:26.367 回答