#java #object #linked-list #data-retrieval
#java #объект #связанный список #извлечение данных
Вопрос:
У меня есть односвязный список с тремя узлами.
Rank1[Identity Number: 1, Location at point: 5.4,3.2, Score: 8.2]
Rank2[Identity Number: 3, Location at point: 2.2,1.2, Score: 6.0]
Rank3[Identity Number: 2, Location at point: 1.4,9.2, Score: 7.5]
Идентификационный номер — целое число , местоположение в точке — объект класса Point , Оценка — double.
Я вставляю узлы в список с объектами записи, который включает точечный объект (местоположение в значении точки).
Чтобы иметь представление о переменных и классах:
Класс точек:
class Point {
public double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
//Απόσταση με δεδομένο το σημείο p
public double dist(Point p) {
return Math.sqrt((this.x-p.x)*(this.x-p.x) (this.y-p.y)*(this.y-p.y));
}
Класс записи:
class Record {
public int id; //Αναγνωριστικό ενός καταστήματος
public Point location; //Συντεταγμένες του σημείου ενδιαφέροντος
public double score; //Βαθμολογία του σημείου
public Record(int id, Point location, double score) {
this.id = id;
this.location = location;
this.score = score;
}
//Επιστρέφει τα στοιχεία που προστέθηκαν για το μαγαζί
public Record copy() {
return new Record(
this.id,
this.location.copy(),
this.score
);
}
Класс узла:
public Record poi;
public Node next;
public Node(Record poi) {
this.poi = poi;
}
public Record getPoi() {
return poi;
}
public void setPoi(Record poi) {
this.poi = poi;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String toString() {
return poi.toString();
}
Следующий класс включает в себя метод main и nearest. В основном методе я вставляю значения и создаю узлы, которые были определены выше. В ближайшем методе я пытаюсь вычислить расстояние между двумя точками местоположений и аргументом p, и если расстояние меньше maxDist, добавьте узел в новый список с именем nearList .
class RankList {
private Node first;
private int nodeCount;
private Record record;
public static void main(String[] args) {
//Inserting the nodes to the singly linkedlist
RankList list1 = new RankList();
list1.nearest(p,maxDist); //maxDist=8.7
}
public RankList nearest (Point p,double maxDist){
RankList nearList = new RankList();
Node current = first;
while (current != null) {
System.out.print(current);
if(record.location.dist(p)<maxDist){ //Finding the distance between the added points with p argument
nearList.insert(record); //Insert the distances shorter than maxDist in a new list.
}
current = current.getNext();
}
System.out.println("null");
return nearList;
}
}
Я пытаюсь извлечь объектную точку из каждого узла, чтобы провести сравнение, а затем добавить их в новый список. Я пытался добиться этого с помощью объекта записи, но, похоже, это не работает.
Основная проблема заключается в том, что я не знаю, как по-другому обрабатывать значения узла и как извлекать те, которые мне нужны.
Любые предложения были бы действительно полезны! Не стесняйтесь спрашивать все о коде.
Комментарии:
1. Какой беспорядок, вы представляете весь этот код, но не представляете свой класс узла, о котором идет речь, код даже недействителен, и я понятия не имею, чего вы пытаетесь достичь.
2. Ваш вопрос «как получить экземпляр Point из экземпляра Node»?
3. @Ecto Вы правы, я добавил это. Мне нужно извлечь точечный объект каждого узла, чтобы провести сравнение и добавить их в новый список.
4. @Ecto Да, именно так!
5.
node.getPoi().location
?