大家好,需要用PriorityQueue进行排列排列的对象是一个类E, 里面的成员变量时x,y,z在类里面我写好了比较的方法:
public int compareTo(E e){
    return (this.z - e.z);
}但是我不知道如何让PriorityQueue去使用排序:
PriorityQueue pq = new PriorityQueue(10);
这样是自然排序,无法处理对象E我上网看了文档,需要用一个interface来告诉PriorityQueue排序方法:
PriorityQueue pq = new PriorityQueue(10, Comparator<E> comparator);然后写一个comparetor的interface:
public interface EdgeComparetor<Edge> {
int campare(E e1, E e2){
return e2.compareTo(e1);
}
}但是我不会写interface,编译器始终提示我在interface文件中,无法识别E e1和E e2
本人新接触Java,希望大家赐教

解决方案 »

  1.   

    PriorityQueue pq = new PriorityQueue(10, Comparator<E> comparator);
    写一个类 实现 Comparator接口就可以。。
    楼主你写的 那个不可以的,接口是不能有实现代码的。public class PriorityQueueComparator implements Comparator
    {
        //int campare(E e1, E e2){
        //    return e2.compareTo(e1);
       // }
       //这里按你的规则实现这个接口 
    }然后调用的时候就是这样了PriorityQueue pq = new PriorityQueue(10, new PriorityQueueComparator());
      

  2.   

    感谢1楼不过我在Eclipse中输入这些代码的时候,编译报错
    public class PriorityQueueComparator implements Comparator
    Comparator cannot be resolved to a typePriorityQueue<Edge> q = new PriorityQueue<Edge>(51,new PriorityQueueComparator());
    The constructor PriorityQueue<Edge>(int, PriorityQueueComparator) is undefinedcomparator类实现可能还有问题
      

  3.   

    按照Eclipse的debug建议,代码被自动修改如下,程序可以运行了
    public class PriorityQueueComparator implements Comparator<Edge> {
    int campare(Edge e1, Edge e2) {
    return e2.compareTo(e1);
    } @Override
    public int compare(Edge o1, Edge o2) {
    // TODO Auto-generated method stub
    return o1.compareTo(o2);
    }
    }
    我对java不懂,方法多了一个重写就能通过编译是怎么回事?