import java.util.TreeMap;
class Point implements Comparable<Point>{
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object arg0) {
Point p = (Point) arg0;
return (this.x == p.x && this.y == p.y);
}
@Override
public String toString() {
return "("+x+", "+y+")";
}
@Override
public int compareTo(Point arg0) {
if(this.x == arg0.x && this.y == arg0.y)
return 0;
return -1;
}
}
public class Test {
static int row, col;
static TreeMap<Point, Integer> dist;
public static void main(String[] args) {
dist = new TreeMap<>();
row = 4;
col = 7;
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
Point p = new Point(i, j);
dist.put(p, Integer.MAX_VALUE);
}
if(i >= 1)
System.out.println(i+": "+dist.keySet().contains(new Point(1, 5)));
}
}
}
输出应该是: 1:真 2:真实 3:真正的为什么我的TreeMap没有正确排序?
但其未来 1:真 2:假 3:假
可以有一个人请解释为什么这个输出会出现? 如果我将预定义数据类型 作为地图的关键字,则此代码工作正常。 有人可以解释为什么这个输出来了? 这段代码工作正常,如果我采取预定义的数据类型
作为地图的关键。
您尝试调试吗? –
您的比较方法* always *返回0或-1。这符合Comparable.compare文档中的期望吗? –
应该返回所有3个值1,0,-1? – Prince