2016-05-02 4 views
-1

У меня есть класс Vertex, который реализует Comparable и overrides equals.Использовать PriorityQueue после переопределения равных и compareTo

public class Vertex implements Comparable<Vertex>{ 

private final int x; 
private final int y; 
private final char c; 

public Vertex(int x, int y, char c) { 
    this.x = x; 
    this.y = y; 
    this.c=c; 

} 

public double heuristic(Vertex goal){ 
    double dx = Math.abs(x - goal.x); 
    double dy = Math.abs(y - goal.y); 
    return Math.sqrt(Math.pow(dx, 2)+Math.pow(dy, 2)); 
} 


@Override 
public String toString() { 
    return ("(" + x + "," + y + ")"+"["+c+"]"); 
} 

@Override 
public int compareTo(Vertex v) { 
    // TODO Auto-generated method stub 
    if(this.heuristic(end)<v.heuristic(end)) return -1; 
    return 1; 
} 
public boolean equals(Vertex v){ 
    if(this.x==v.x && this.y==v.y) return true; 
    return false; 
} 

/* 
public boolean equals(Object o){ 
    if(o.getClass().getName()=="Vretex"){ 
     Vertex v=(Vertex)o; 
     return this.equals(v); 
    } 
    return false; 
} 
*/ 

} 

При использовании PriorityQueue и проверить, если один объект (различные объекты), которые равен по функциональности равной функции находится в PriorityQueue я получаю ложь.

Также попробовал один в комментарии без успеха.

ответ