我有一个实现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长,长
答案 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");
}