Java: Доступ к локальным переменным из внутреннего класса? (PriorityQueue)
Я хочу использоватьPriorityQueue
сделать топологическую сортировку на графе. Для краткости яЯ хотел бы использовать анонимный внутренний класс для компаратора. Однако мне нужен доступ к графикуg
для того, чтобы определить степень узлов I 'Я смотрю на. Это возможно?
/**
* topological sort
* @param g must be a dag
*/
public static Queue topoSort(DirectedGraph g) {
Queue result = new PriorityQueue(g.vertexSet().size(),
new Comparator() {
DirectedGraph g;
@Override
public int compare(String arg0, String arg1) {
if (g.inDegreeOf(arg0) < g.inDegreeOf(arg1)) {
return -1;
}
if (g.inDegreeOf(arg0) > g.inDegreeOf(arg1)) {
return 1;
}
return 0;
}
});
result.addAll(g.vertexSet());
return result;
}
ИСПРАВЛЕННЫЙ КОД
/**
* topological sort
* @param g must be a dag
*/
public static Queue topoSort(final DirectedGraph g) {
Queue result = new PriorityQueue(g.vertexSet().size(),
new Comparator() {
@Override
public int compare(String arg0, String arg1) {
if (g.inDegreeOf(arg0) < g.inDegreeOf(arg1)) {
return -1;
}
if (g.inDegreeOf(arg0) > g.inDegreeOf(arg1)) {
return 1;
}
return 0;
}
});
result.addAll(g.vertexSet());
return result;
}