gpt4 book ai didi

Java 从 PriorityQueue 中找到的节点列表中获取最后一个元素

转载 作者:行者123 更新时间:2023-12-02 13:24:07 25 4
gpt4 key购买 nike

我在使用以下代码时遇到了问题:

问题代码:

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) 获取列表值中的最后一个节点时,问题出现了,因为 n1.size() 未被识别。

我收到错误

cannot find symbol- variable n1

在 .get(n1.size()-1) 部分。我的主要目标是使用 PriorityQueue pq 获取第一个元素,然后获取第一个元素的 List 部分,这样我就可以获取 List 中的最后一个 Node 值(这就是我一直尝试使用 .get(n1 .size()-1) )。 PriorityQueue 中的元素存储在以下结构中:

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

最佳答案

每次使用时,您都需要将 n1 推迟到 lastPeek,如下所示:

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

关于Java 从 PriorityQueue 中找到的节点列表中获取最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com