绘制道路的地图城市之间有秩算法
我们有class City { int num; Double x; Double y; }; Road { Int num; City City1; City City1; Double distance}; Arraylist<Road> Rsystem=new Arraylist<Road>(); Rsystem(add(new Road(1; City1; City2);
绘制道路的地图城市之间有秩算法
`Rsystem(add(new Road(n; Citym; Cityk);`
但我需要它以升序排序路的ArrayList中,从最短所以开始;
所以我想问问,我可以申请道路等构造函数
`Road {
Int num;
City City1;
City City1;
Double} Road (int num, City City1, City City2) { this.num=num;
this.City1=City1;this.City2=City2;this.distance=
sqw((Pow(City1.x- City2.x),2)+ ((Pow(City1.y-City2.y), 2);)`
还是应该使用一些方法 - double getdistance(Road RoadN) { double d; d=((Pow(RoadN.City1.x-RoadN.City2.x), 2)+ ((Pow(RoadN.City1.y- RoadN.City2.y), 2);
Return d;}
于是我使用的界面相当(只是一个比较 - ),并希望 排序这样的ArrayList,其中包括 1. City1.City2. 2. City2.City3. 3. City1.City3
... 我应该包括强制性现场距离 1. City1.City2.500 2. City2.City3.300 3. City1.City3.550
... 通过它来进行排序,或者我可以只使用getDistance(Cityn)
以进行排序比较(Cityn.getDistance())
?你会建议什么? 另一个问题是我可以只是 当它被排序时,它可以被视为 34.City32.City34 22.city25.city27 27.city28.city29
。
我可以排序只是他们应该viwed为 1.City32.City34 2.city25.city27 3.city28.city29
。
构造道路设定的距离,以可变距离的ArrayList对象的索引(编号字段。
Arraylist<Road> Rsystem=new Arraylist<Road>();
Rsystem(add(new Road(1; City1; City2);
这是正确的。
所以,如果你需要排序收集道路(Rsystem),你需要根据排序双距离。
类道路:
class Road {
Int num;
City City1;
City City1;
private Double distance;
public Double getDistance(){
return distance;
};
};
您需要自定义比较排序根据属性:
public class RoadComparator implements Comparator<Road> {
@Override
public int compare(Road o1, Road o2) {
return o1.getDistance() - o2.getDistance();
}
}
然后排序依据进行:
Collections.sort(Rsystem, new RoadComparator());
通过这种方式,您可以排序与任何标准。