我的目标如下。
public class Coords {
public int x;
public int z;
public Coords(int x, int z) {
this.x = x;
this.z = z;
}
}
如何实现Compareable? 我不确定 compareTo 方法应该做什么。
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
答案 0 :(得分:2)
您可以比较x
然后比较z
(或者,z
然后x
)。另外,我建议您覆盖toString
。像,
public class Coords implements Comparable<Coords> {
public int x;
public int z;
public Coords(int x, int z) {
this.x = x;
this.z = z;
}
@Override
public int compareTo(Coords o) {
if (this.x == o.x) {
if (this.z == o.z) {
return 0;
}
return this.z < o.z ? -1 : 1;
}
return this.x < o.x ? -1 : 1;
}
@Override
public String toString() {
return String.format("{%d, %d}", x, z);
}
}
答案 1 :(得分:0)
以下是compareTo的详细信息:
将此对象与指定的订单对象进行比较。返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。
我建议这样的事情:
@Override
public int compareTo(Coords other) {
return this.x == other.x ? (this.z == other.z ? 0 : this.z - other.z) : this.x - other.x
如果切换它们,可以使z
更重要。