【发布时间】:2014-11-21 20:43:19
【问题描述】:
我有一个比较器按 3 个值排序:
- ORDER_BY_Points
- ORDER_BY_Gdif // 目标差
- ORDER_BY_Goals
首先我从一个 json 字符串中得到一个数组。我将数组发送到 StandingsSort.ORDER_BY_RULES
Arrays.sort(addressArray, StandingsSort.ORDER_BY_RULES);
这是我的代码:
static final Comparator<Standings> ORDER_BY_Points = new Comparator<Standings>() {
public int compare(Standings a1, Standings a2) {
return a1.points.compareTo(a2.points);
}
};
static final Comparator<Standings> ORDER_BY_Gdif = new Comparator<Standings>() {
public int compare(Standings a1, Standings a2) {
return a1.Gdif.compareTo(a2.Gdif);
}
};
static final Comparator<Standings> ORDER_BY_Goals = new Comparator<Standings>() {
public int compare(Standings a1, Standings a2) {
return a1.goalsP.compareTo(a2.goalsP);
}
};
static final Comparator<Standings> ORDER_BY_RULES = new Comparator<Standings>() {
public int compare(Standings a1, Standings a2) {
int i = ORDER_BY_Points.compare(a1,a2);
if(i == 0){
i = ORDER_BY_Gdif.compare(a1,a2);
if(i == 0){
i = ORDER_BY_Goals.compare(a1,a2);
}
}
return i;
}
};
class Standings {
String teamName;
String goalsP;
String goalsM;
String Gdif;
String points;
@Override
public String toString() {
return "" + teamName + "," + goalsP + ":" + goalsM + "," + Gdif + "," + points + "";
}
public Standings(String teamName, String goalsP,
String goalsM, String Gdif, String points) {
super();
this.teamName = teamName;
this.goalsP = goalsP;
this.goalsM = goalsM;
this.Gdif = Gdif;
this.points = points;
}
}
但是结果不行!这是结果
Name, Goals, GDif, Points
Team,11:9,2,10
Team,5:3,2,10
Team,9:2,7,11
Team,0:6,-6,2
Team,3:9,-6,2
Team,6:9,-3,3
Team,8:13,-5,3
Team,8:9,-1,5
Team,8:11,-3,5
Team,8:7,1,5
为什么 Comparator 排序错误?
【问题讨论】:
-
您使用哪种排序获得结果?
-
@clever_trevor Arrays.sort(addressArray, StandingsSort.ORDER_BY_RULES);
-
请编辑您的帖子。你首先给出了结果,然后告诉你之后做了哪种。更令人困惑的是“在那之后我做”。因为看起来好像你是在得到结果后才这样做的。所以最好先告诉你使用哪种排序,然后给出结果。
-
请给出排名的定义。
-
请添加一些代码来实例化这些项目,以便我们可以复制、粘贴和尝试。
标签: android sorting comparator