java Collections 排序–多条件排序
Collections.sort(domesticAirport, comparator);
Comparator<AirportRtWeatherWarningBeanForTable> comparator = new Comparator<AirportRtWeatherWarningBeanForTable>() {
@Override
public int compare(AirportRtWeatherWarningBeanForTable a1, AirportRtWeatherWarningBeanForTable a2) {
if(a1.isMetarExpired() && !a2.isMetarExpired()){
return 1;
}else if (!a1.isMetarExpired() && a2.isMetarExpired()) {
return -1;
} else if ((a1.isMetarExpired() && a2.isMetarExpired()) || (!a1.isMetarExpired() && !a2.isMetarExpired())) {
if (a1.getWarningColor() != a2.getWarningColor()) {
return compareColor(a1.getWarningColor(), a2.getWarningColor());
}
}
return a1.getCode4().compareTo(a2.getCode4());
}
};
public int compareColor(Color color1, Color color2) {
int i = 0;
int j = 0;
if (color1.equals(MeteoWeatherWarningPanel.RED)) {
i = 3;
} else if (color1.equals(MeteoWeatherWarningPanel.YELLOW)) {
i = 2;
} else if (color1.equals(MeteoWeatherWarningPanel.GREEN)) {
i = 1;
}
if (color2.equals(MeteoWeatherWarningPanel.RED)) {
j = 3;
} else if (color2.equals(MeteoWeatherWarningPanel.YELLOW)) {
j = 2;
} else if (color2.equals(MeteoWeatherWarningPanel.GREEN)) {
j = 1;
}
int k = i - j;
if (k > 0) {
return -1;
} else if (k < 0) {
return 1;
} else
return 0;
}