我有一个linkedlist,其中包含不同类型的数据,我需要处理这些数据,以便进行比较并添加符合范围的值。下面将给出更多解释, LinkedList
填充了记录类的数据:
class Record {
public int id;
public Point location;
public double score;
(...)
}
点类:
class Point {
public double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
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 RankList {
private Node first;
private int nodeCount;
private Record record;
public static void main(String[] args) {
RankList list = new RankList();
Point point = new Point(5.4, 3.2);
Record record = new Record(1, point, 8.2);
System.out.println(list.insert(record));
double maxDist=point.dist(point);
Point point1 = new Point(1.4, 9.2);
Record record1 = new Record(2, point1, 7.5);
if((point1.dist(point)>maxDist)) maxDist=point1.dist(point);
System.out.println(list.insert(record1));
Point point2 = new Point(2.2, 1.2);
Record record2 = new Record(3, point2, 6.0);
if((point2.dist(point1)>maxDist)) maxDist=point2.dist(point1);
System.out.println(list.insert(record2));
list.nearest(point1,maxDist);
我在列表中插入了一些值,假设给定点之间有一些距离值,比如:
Distance between two points:
A->B = 3.2455
B->C = 7.345
C->D = 2.111
D->E = 8.056
从那以后 maxDist
值为8.059
现在我要写方法了 public RankList nearest (Point p,double maxDist)
它查找作用域(<=maxdist)之间的所有距离值,并将它们与其余节点值一起返回到一个列表中。所以我需要用linkedlist的指针和给定的 Point p
参数,并将它们添加到新列表中。
我的问题是我是否可以访问 LinkedList
它已经用值实现了,并将我需要的复制到新的列表结构中。
最近的方法:
public RankList nearest (Point p,double maxDist){
RankList nearList = new RankList();
Node current = first;
System.out.print("HEAD -> ");
while (current != null) {
System.out.print(current);
System.out.print(" -> ");
current = current.getNext();
}
System.out.println("null");
return null;
}
我试着把整个 LinkedList
用传统的方法,但我会把它们放在如何进行比较并添加到新的列表中。
有什么建议吗?
1条答案
按热度按时间zbq4xfa01#
我对你的代码有点困惑。我找不到
LinkedList
在里面。你的班级RankList
似乎只有三个字段,而且都不是列表类型。我不知道这是怎么回事insert
方法确实如此。在类中使用
main
方法。如果你准备另一个运行这个程序的类会更好。我想展示一下如何编写代码:
有些概念对你来说可能是新的。最复杂的一个可能是streamapi。您可以阅读更多信息,即:https://www.baeldung.com/java-8-streams
如果你有任何问题,或者我误解了你的问题,请尽管问。