發現節點的名單我一直有與下面的代碼的問題:的Java得到最後一個元素從內部的PriorityQueue
問題代碼:
Node lastPeek=pq.peek();
tempList3.add(lastPeek.n1.get(n1.size()-1));
其中PQ是一個PriorityQueue(存儲類型節點的對象(進一步查看節點類),其中包含List<Node>
和double類型的對象)。時Queue以下列方式聲明:
Comparator<Node> comparator= new CostComparator();
//creation of priority queue of type Node
PriorityQueue<Node> pq=new PriorityQueue<Node>(comparator);
tempList3(從問題代碼部分)是具有以下聲明一個ArrayList:
List<Node> tempList3=new ArrayList<Node>();
以下是Node類的一部分:
public int dest;
public Node next;
public Node parent;
double cost=0;
List<Node> n1=new ArrayList<Node>();
public Node(int d) {
dest = d;
next = null;
parent = null;
}
//used for storing objects into PriorityQueue pq
public Node(List<Node> n, double icost) {
n1=n;
cost=icost;
}
如描述爲「問題代碼」的代碼的部分看到的,我一直在試圖類型的到時Queue PQ執行窺視()操作,並將該值存儲在Node類型的lastPeek中。問題出現了,當我嘗試使用.n1.get(n1.size() - 1)獲取List值中的最後一個節點時,因爲n1.size()未被識別。
我收到錯誤
在不用彷徨找不到符號 - 變量N1
(n1.size() - 1)的一部分。我的主要目標是獲得具有PriorityQueue pq的第一個元素,然後獲取第一個元素的List部分,然後讓我得到List中的最後一個Node值(這就是爲什麼我一直試圖使用.get(n1 .size() - 1))。在PriorityQueue中的元素被存儲在以下結構:
Node n=new Node(List<Node> , double);
你是什麼意思' 「......未被識別」?你有編譯問題嗎?如果是這樣,請發佈完整的錯誤信息與您的問題。 –
問題:爲什麼你要以這種方式使用公共字段和直接字段訪問?這增加了代碼的複雜性和連通性,增加了錯誤的風險。 –
我得到錯誤在.get(n1.size() - 1)部分中找不到符號變量n1。我會照辦的! @HovercraftFullOfEels – Alisinna