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));
我一直遇到以下代码的问题:
问题代码:
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));