簡體   English   中英

Java從PriorityQueue中找到的節點列表中獲取最后一個元素

[英]Java get last element from List of nodes found within PriorityQueue

我遇到了以下代碼的問題:

問題代碼:

Node lastPeek=pq.peek();
tempList3.add(lastPeek.n1.get(n1.size()-1));

其中pq是PriorityQueue(存儲Node類型的對象(請參見下面的Node類),包含List<Node>和double類型的對象)。 PriorityQueue通過以下方式聲明:

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;
    }

從描述為“問題代碼”的代碼部分可以看出,我一直在嘗試對<Node>類型的PriorityQueue pq執行peek()操作,並將值存儲在Node類型的lastPeek中。 當我嘗試通過使用.n1.get(n1.size()-1)獲取List值內的最后一個Node時出現問題,因為未識別n1.size()。

我收到錯誤

找不到符號變量n1

在.get(n1.size()-1)部分中。 我的主要目的是使用PriorityQueue pq獲取第一個元素,然后獲取該第一個元素的List部分,然后使我能夠獲取List中的最后一個Node值(這就是為什么我一直嘗試使用.get(n1 .size()-1))。 PriorityQueue中的元素以以下結構存儲:

Node n=new Node(List<Node> , double);

每次使用時都需要從lastPeek延遲n1,如下所示:

tempList3.add(lastPeek.n1.get(lastPeek.n1.size()-1));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM