假设我有一个Test列表如下:
public class Test {
public static enum Unit {
DAY, WEEK, MONTH, YEAR /* , DAY_TO_DAY */
}
private int value;
private Unit unit;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Unit getUnit() {
return unit;
}
public void setUnit(Unit unit) {
this.unit = unit;
}
}
Run Code Online (Sandbox Code Playgroud)
我将有一个Test列表,其中包含以下值:
3天,5个月,5天,6年,6周,12周,
我们的考试结果如下:
3天,5天,6周,12周,5个月,6年
目前,我创建了如下代码
Collections.sort(tests, new Comparator<Test >() {
@Override
public int compare(Test o1, Test o2) {
if(o1.getValue() > o2.getValue()) return 1;
if(o1.getValue() < o2.getValue()) return -1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,它只按值而不是按单位排序.上述实现的结果是:
3天,5天,5个月,6周,6年,12周.
请告诉我在这种情况下满足两个条件(单位和值)的方法.谢谢.
您需要先将其转换为通用格式,然后进行比较.由于天是最小的类型,您应该将您比较的两个实例转换为若干天,然后根据它进行比较.
但你首先要做一些消歧.一个月多久了?它是否超过30天,或更短,或相同?