предположив, что у меня есть список испытаний, как показано ниже:Как отсортировать список объектов
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;
}
}
у меня будет список испытаний с ниже значений:
3 дня, 5 месяц , 5 дня, 6 года, 6 недели, 12 недели,
и наш результат expection, как показано ниже:
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;
}
Однако, это только сортировку по значению, а не группа. Результат с вышеуказанной реализацией:
3 день, 5 день, 5 месяц, 6 неделя, 6 год, 12 неделя.
В этом случае сообщите мне, как можно удовлетворить два условия (единица измерения и значения). Спасибо.
Сравните устройство во-первых, если сравнение возвращает 0, сравните значение. –
Это неправильное решение. 35 дней больше одного месяца. – Behnil
Вы используете Java 8? Если нет, вы используете threetenbp? Если нет, вы используете Joda TIme? – fge