我们有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
。
我可以只对索引进行排序(Arraylist对象的数字字段,它们应该被视为
1.City32.City34
2.city25.city27
3.city28.city29
。
答案 0 :(得分:0)
道路设置距离中的构造函数,变量距离。
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());
通过这种方式,您可以按任何标准进行排序。