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 class 进一步向下),包含 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>();

以下为部分节点class:

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

如代码中描述为 'PROBLEM CODE' 的部分所示,我一直在尝试对类型为 <Node> 的 PriorityQueue pq 执行 peek() 操作并将值存储在 lastPeek 中类型节点。问题出现了,当我尝试使用 .n1.get(n1.size()-1) 获取列表值中的最后一个节点时,因为 n1.size() 未被识别。

我遇到错误

cannot find symbol- variable n1

在 .get(n1.size()-1) 部分。我的主要目标是使用 PriorityQueue pq 获取第一个元素,然后获取第一个元素的列表部分,然后允许我获取列表中的最后一个节点值(这就是为什么我一直在尝试使用 .get(n1.size()-1))。 PriorityQueue 中的元素存储在以下结构中:

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

每次使用 lastPeek 时,您都需要将 n1 推迟:

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