作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现邻接矩阵的 Dijkstra 算法,并且我正在使用 Java 优先级队列来执行此操作。对于我的顶点,我正在创建一个自定义比较器类,但出现以下错误:
<anonymous Dijkstra$1> is not abstract and does not override abstract method compare(vertex,vertex) in java.util.Comparator
PriorityQueue<vertex> Q = new PriorityQueue<vertex>(n,new Comparator<vertex>() {
这是代码:
import java.util.Scanner;
import java.io.File;
import java.util.PriorityQueue;
import java.util.Comparator;
class vertex {
int v,d;
public vertex(int num,int dis){
v =num;
d=dis;
}
public int getv(){
return v;
}
public int getd(){
return d;
}
}
然后我用它来创建一个新的优先级队列:
PriorityQueue<vertex> Q = new PriorityQueue<vertex>(n,new Comparator<vertex>() {
public int compare (Object a, Object b){
vertex v1 = (vertex)a;
vertex v2 = (vertex)b;
if (v1.getd() > v2.getd()){
return +1;
}else if (v1.getd() < v2.getd()){
return -1;
}else {
return 0;
}
}});
最佳答案
您收到的错误是因为您没有实现正确的方法。 compare
的签名方法Comparator<vertex>
是 public int compare (vertex a, vertex b);
而不是public int compare (Object a, Object b);
。
此外,正如 JB Nizer 明智地指出的那样,最好按如下方式实现比较方法:
public int compare (vertex a, vertex b) {
return Integer.compare(a.getd(), b.getd());
}
关于java - 使用自定义比较器类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668212/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!