绘制道路的地图城市之间有秩算法

问题描述:

我们有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()); 

通过这种方式,您可以排序与任何标准。