Java 关于轮询的优先级队列错误
Java Priority queue error about poll
我在轮询优先队列方面遇到问题。我的尝试是这样的:
public int [][] MST(int i, int prim[][], int mst[][], int vertices, int counter, PriorityQueue priorityQueue){
Table table = new Table();
int next_row;
for(int j=0;j<vertices;j++)
{
table.s = i;
table.d = j;
table.w = prim[i][j];
priorityQueue.add(table);
}
table = priorityQueue.poll();
mst[counter][0] = table.s;
mst[counter][1] = table.d;
return mst;
}
然后我在 priorityQueue.poll() 处出错。它说需要 Table,但找到了 java.lang.Object。
我该如何解决这个问题?
您可以在 priorityQueue 的声明中指定项目的类型
PriorityQueue < Integer > prq = new PriorityQueue < Integer > ();
prq.add (new Integer (5)) ;
Integer number = prq.poll();
但如果您不能更改声明,您可以使用 typeCasting
PriorityQueue prq = new PriorityQueue();
prq.add (new Integer (5)) ;
Integer number = (Integer) prq.poll();
使用类型转换为
PriorityQueue prq = new PriorityQueue();
prq.add (new Table (values)) ;
Table data = (Table) prq.poll();
我在轮询优先队列方面遇到问题。我的尝试是这样的:
public int [][] MST(int i, int prim[][], int mst[][], int vertices, int counter, PriorityQueue priorityQueue){
Table table = new Table();
int next_row;
for(int j=0;j<vertices;j++)
{
table.s = i;
table.d = j;
table.w = prim[i][j];
priorityQueue.add(table);
}
table = priorityQueue.poll();
mst[counter][0] = table.s;
mst[counter][1] = table.d;
return mst;
}
然后我在 priorityQueue.poll() 处出错。它说需要 Table,但找到了 java.lang.Object。
我该如何解决这个问题?
您可以在 priorityQueue 的声明中指定项目的类型
PriorityQueue < Integer > prq = new PriorityQueue < Integer > ();
prq.add (new Integer (5)) ;
Integer number = prq.poll();
但如果您不能更改声明,您可以使用 typeCasting
PriorityQueue prq = new PriorityQueue();
prq.add (new Integer (5)) ;
Integer number = (Integer) prq.poll();
使用类型转换为
PriorityQueue prq = new PriorityQueue();
prq.add (new Table (values)) ;
Table data = (Table) prq.poll();