我尝试按照以下方式排序:
MyPOJO:
String city;
String tokenA;
String tokenB;
城市是城市的名称。
tokenA只能是" ALARM"或" ALERT"
tokenB只能是" ALARM"或" ALERT"
如果有几个MyPOJO有" ALARM"在tokenA和tokenB中,根据内部城市排序。
如果有几个MyPOJO有" ALERT"在tokenA和tokenB中,根据内部城市排序。
任何字段或两个字段中带有ALARM的MyPOJO必须始终在ALERT之前。
我有第一个tokenA,但我不知道如何最好地引入tokenB。
我的代码:
@Override
public int compareTo(Object other) {
if (other == null) {
throw new NullPointerException();
}
MyPOJO that = (MyPOJO) other;
int token = tokenA.compareTo(that.tokenA);
if (token != 0) {
return token;
}
return city.compareTo(that.city);
}
答案 0 :(得分:1)
这是您想要的方法。
在compareTo
方法中执行此操作:
if tokenA == ALARM and other.tokenA != ALARM return -1
if tokenA != ALARM and other.tokenA == ALARM return 1
if tokenB == ALARM and other.tokenB != ALARM return -1
if tokenB != ALARM and other.tokenB == ALARM return 1
if tokenB == ALARM and other.tokenB == ALARM
return city.compareTo(other.city)
if tokenA == ALERT and other.tokenA != ALERT return -1
if tokenA != ALERT and other.tokenA == ALERT return 1
if tokenB == ALERT and other.tokenB != ALERT return -1
if tokenB != ALERT and other.tokenB == ALERT return 1
if tokenB == ALERT and other.tokenB == ALERT
return city.compareTo(other.city)
return city.compareTo(other.city)