Java覆盖compareTo,Long

时间:2013-10-10 16:42:08

标签: java comparable compareto

我有一个实现Comparable接口的类。在这个类中,我需要覆盖compareTo方法,以便按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长,长

6 个答案:

答案 0 :(得分:9)

您的问题是MyEntry<K, V>没有告诉编译器您要比较的对象类型。它不知道您正在比较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;
}

答案 1 :(得分:8)

Long l1 = new Long(3);
Long l2 = new Long(2);

return l1.compareTo(l2);

简单否?

答案 2 :(得分: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中进行了tutorial比较。也许它可以帮助你。

答案 3 :(得分:2)

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

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

这是一个很好的Java实践。

@Override
                public int compare(long t1, long t2) {
                    return Long.valueOf(t1).compareTo(t2);
                }

答案 4 :(得分:0)

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

例如: -

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

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

assertTrue(id1.longValue() == id2.longValue())

答案 5 :(得分:-1)

long 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");
 }