У меня возникла проблема со следующим кодом:
КОД ПРОБЛЕМЫ:
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;
}
Как видно из части кода, описанной как «КОД ПРОБЛЕМЫ», я пытался выполнить операцию peek() для PriorityQueue pq типа <Node>
и сохранить значение в lastPeek типа Node. Проблема возникает, когда я пытаюсь получить последний узел в значении списка, используя .n1.get(n1.size()-1), поскольку n1.size() не распознается.
я получаю сообщение об ошибке
не может найти символьную переменную n1
в части .get(n1.size()-1). Моя главная цель — получить первый элемент с помощью PriorityQueue pq, а затем получить часть списка этого первого элемента, что затем позволит мне получить значение последнего узла в списке (вот почему я пытался использовать .get(n1 .size()-1) ). Элементы PriorityQueue хранятся в следующей структуре:
Node n=new Node(List<Node> , double);
"...is not being recognised"
? У вас проблемы с компиляцией? Если это так, пожалуйста, опубликуйте полное сообщение об ошибке с вашим вопросом. - person Hovercraft Full Of Eels   schedule 17.04.2017n1
не является общедоступным, так что, возможно, это ваша проблема. Но, сказав это, я снова советую не делать его публичным, а лучше сделать все поля приватными и контролировать доступ через публичные методы. - person Hovercraft Full Of Eels   schedule 17.04.2017lastPeek.n1.get(n1.size()-1)
. Первыйn1
имеет квалификациюlastPeek
, второй — нет. Теперь, почему вы думаете, что это не скомпилируется? - person Andreas   schedule 17.04.2017