无法引用内部类

时间:2015-06-11 12:42:06

标签: java algorithm

作为练习,我试图使用最小优先级队列在Java中实现Dijkstra算法。队列必须根据条目与源的距离确定条目的优先级。

public static <E> void dijkstraPriority(Graph<E> g, Vertex<E> source, Vertex<E> dest) {
    Map<Vertex<E>,Double> dist = new HashMap<Vertex<E>,Double>();
    Map<Vertex<E>,Vertex<E>> prev = new HashMap<Vertex<E>,Vertex<E>>();
    Queue<Vertex<E>> q = new PriorityQueue<Vertex<E>>(g.getVertices().size(),
        new Comparator<Vertex<E>>(){
            @Override
            public int compare(Vertex<E> v, Vertex<E> u) {
                return dist.get(v).compareTo(dist.get(u));  //error happens here
            }
        }
    );
    //The rest of the implementation
}

我在第8行收到的错误是:“不能引用内部类中的非final变量”。

由于我必须在算法期间更新距离,dist不能是final,但这反过来阻止我当前实施比较器。我在这里看过任何类似的问题,但似乎没有一个适用于我的情况。

有什么方法可以解决这个问题吗?

0 个答案:

没有答案